diff options
author | Nagy Gabor <ngaba@bibl.u-szeged.hu> | 2009-03-07 16:25:29 +0100 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2009-04-11 20:55:46 +0200 |
commit | 634304feae6574d42e069a6718621cf2852f08ab (patch) | |
tree | 027a089850199370ea8d25094f51d1b4a194f2d0 /lib/libalpm | |
parent | 56fd24ecf8b75904444f548488fbe96185cf2492 (diff) | |
download | pacman-634304feae6574d42e069a6718621cf2852f08ab.tar.gz pacman-634304feae6574d42e069a6718621cf2852f08ab.tar.xz |
Free *data list when user removes unresolvable packages
Resolvedeps reports error when it cannot resolve some dependencies, puts
them into the *data list, and set pm_errno. If user removes the
unresolvable packages from the target list, we have no error anymore,
so from now on we free *data list (we eliminate a memleak) and unset
pm_errno.
(Additionally I removed two needless lines from the code, unresolvable list
is always freed in cleanup.)
Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'lib/libalpm')
-rw-r--r-- | lib/libalpm/sync.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index 4cbdb621..e5a5f7ed 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -451,14 +451,16 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync NULL, NULL, &remove_unresolvable); if (remove_unresolvable) { /* User wants to remove the unresolvable packages from the - transaction, so simply drop the unresolvable list. The - packages will be removed from the actual transaction when - the transaction packages are replaced with a + transaction. The packages will be removed from the actual + transaction when the transaction packages are replaced with a dependency-reordered list below */ - alpm_list_free(unresolvable); - unresolvable = NULL; - } - else { + pm_errno = 0; /* pm_errno was set by resolvedeps */ + if(data) { + alpm_list_free_inner(*data, (alpm_list_fn_free)_alpm_depmiss_free); + alpm_list_free(*data); + *data = NULL; + } + } else { /* pm_errno is set by resolvedeps */ ret = -1; goto cleanup; |