diff options
author | Judd Vinet <judd@archlinux.org> | 2005-10-21 18:53:40 +0000 |
---|---|---|
committer | Judd Vinet <judd@archlinux.org> | 2005-10-21 18:53:40 +0000 |
commit | cebc7ace60a8f6a03e28282cfa43fc20088693c5 (patch) | |
tree | 1bf5e1d65e9f64f5e5a9ddbfc5c9ca6a99e5e020 /lib | |
parent | ff50305a02557c1aa423fd43a76bdc13424ae08e (diff) | |
download | pacman-cebc7ace60a8f6a03e28282cfa43fc20088693c5.tar.xz |
fixed a segfault that occured in special cases when propagating requiredby fields during package replacements
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libalpm/sync.c | 7 |
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); |