summaryrefslogtreecommitdiffstats
path: root/lib/libalpm/sync.c
diff options
context:
space:
mode:
authorNagy Gabor <ngaba@bibl.u-szeged.hu>2009-03-07 16:25:29 +0100
committerDan McGee <dan@archlinux.org>2009-04-11 20:55:46 +0200
commit634304feae6574d42e069a6718621cf2852f08ab (patch)
tree027a089850199370ea8d25094f51d1b4a194f2d0 /lib/libalpm/sync.c
parent56fd24ecf8b75904444f548488fbe96185cf2492 (diff)
downloadpacman-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/sync.c')
-rw-r--r--lib/libalpm/sync.c16
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;