summaryrefslogtreecommitdiffstats
path: root/lib/libalpm/package.c
diff options
context:
space:
mode:
authorChantry Xavier <shiningxc@gmail.com>2007-10-18 13:26:04 +0200
committerDan McGee <dan@archlinux.org>2007-10-18 19:32:10 +0200
commit0ff02995f169d460d60a9512d7fa8257c74ed8f4 (patch)
treecdc0b15350af321afba27a9aff9033d796d4f7a9 /lib/libalpm/package.c
parent619bf56e6613333f319fb1add22fa989060e208d (diff)
downloadpacman-0ff02995f169d460d60a9512d7fa8257c74ed8f4.tar.gz
pacman-0ff02995f169d460d60a9512d7fa8257c74ed8f4.tar.xz
libalpm/package.c : fix requiredby with multiple providers.
The code didn't match the following comment : "A depends on B through n depends <=> A listed in B's requiredby n times" It stopped at n=1 with a break. I was surprised to see this case happens in real, that's how I noticed the bug: wine depends on both freeglut and glut, while freeglut provides glut. So when installing wine, the update_depends function listed wine twice in freeglut's requiredby. But the compute_requiredby function (used when installing freeglut, and used by testdb) listed wine only once in freeglut's requiredby. That made testdb unhappy. Signed-off-by: Chantry Xavier <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'lib/libalpm/package.c')
-rw-r--r--lib/libalpm/package.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c
index 38e6e4c2..9e45b1d5 100644
--- a/lib/libalpm/package.c
+++ b/lib/libalpm/package.c
@@ -527,7 +527,6 @@ alpm_list_t SYMEXPORT *alpm_pkg_compute_requiredby(pmpkg_t *pkg)
for(j = alpm_pkg_get_depends(cachepkg); j; j = j->next) {
pmdepend_t *dep;
- int satisfies;
if(!j->data) {
continue;
@@ -537,14 +536,12 @@ alpm_list_t SYMEXPORT *alpm_pkg_compute_requiredby(pmpkg_t *pkg)
continue;
}
- satisfies = alpm_depcmp(pkg, dep);
- FREE(dep);
- if(satisfies) {
+ if(alpm_depcmp(pkg, dep)) {
_alpm_log(PM_LOG_DEBUG, "adding '%s' in requiredby field for '%s'\n",
cachepkgname, pkg->name);
reqs = alpm_list_add(reqs, strdup(cachepkgname));
- break;
}
+ FREE(dep);
}
}
return(reqs);