summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJudd Vinet <judd@archlinux.org>2005-10-21 20:53:40 +0200
committerJudd Vinet <judd@archlinux.org>2005-10-21 20:53:40 +0200
commitcebc7ace60a8f6a03e28282cfa43fc20088693c5 (patch)
tree1bf5e1d65e9f64f5e5a9ddbfc5c9ca6a99e5e020
parentff50305a02557c1aa423fd43a76bdc13424ae08e (diff)
downloadpacman-cebc7ace60a8f6a03e28282cfa43fc20088693c5.tar.gz
pacman-cebc7ace60a8f6a03e28282cfa43fc20088693c5.tar.xz
fixed a segfault that occured in special cases when propagating requiredby fields during package replacements
-rw-r--r--lib/libalpm/sync.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c
index d3fe238d..11bbcc3a 100644
--- a/lib/libalpm/sync.c
+++ b/lib/libalpm/sync.c
@@ -590,6 +590,13 @@ int sync_commit(pmtrans_t *trans, pmdb_t *db_local)
/* replace old's name with new's name in the requiredby's dependency list */
PMList *m;
pmpkg_t *depender = db_get_pkgfromcache(db_local, k->data);
+ if(depender == NULL) {
+ /* If the depending package no longer exists in the local db,
+ * then it must have ALSO conflicted with sync->pkg. If
+ * that's the case, then we don't have anything to propagate
+ * here. */
+ continue;
+ }
for(m = depender->depends; m; m = m->next) {
if(!strcmp(m->data, old->name)) {
FREE(m->data);