From 0ff02995f169d460d60a9512d7fa8257c74ed8f4 Mon Sep 17 00:00:00 2001 From: Chantry Xavier Date: Thu, 18 Oct 2007 13:26:04 +0200 Subject: 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 Signed-off-by: Dan McGee --- lib/libalpm/package.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'lib') 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); -- cgit v1.2.3