Where is qname defined? And can you please explain why and not just what the bug is? Yes, this function is quite messy;-) In each step we permute the objects (tmptargs list) we want to sort (we try to ensure that each package follows its dependencies in the list). So tmptargs stores packages not provides. And in most cases _alpm_pkg_find(provname, tmptargs) is false, so we may add duplicate entries to tmptargs; here we want to check whether q has been added to tmptargs already or not (qname is the name of q). In addition, patch format is much easier for everyone to put in context- it has line numbers, function names, etc.
-Dan ------patch----------- diff -Naur pacman-lib/lib/libalpm/deps.c pacman-lib.new/lib/libalpm/deps.c --- pacman-lib/lib/libalpm/deps.c 2007-04-21 08:01:40.000000000 +0200 +++ pacman-lib.new/lib/libalpm/deps.c 2007-04-21 08:05:16.000000000 +0200 @@ -163,7 +163,7 @@ for(l = alpm_pkg_get_provides(q); l; l = l->next) { const char *provname = l->data; if(!strcmp(depend->name, provname)) {
+ if(!_alpm_pkg_find(qname, tmptargs)) { change = 1; tmptargs = alpm_list_add(tmptargs, q); } ---------------------- Bye, ngaba