summaryrefslogtreecommitdiff
path: root/lib/libalpm/trans.c
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2011-09-28 01:53:43 -0500
committerDan McGee <dan@archlinux.org>2011-09-28 04:52:37 -0500
commit40a264478e65c652f863b3e43b0fc8aa10f0bd19 (patch)
tree4f0774d7e13583dca6a3e181d29f0e9c38dc009b /lib/libalpm/trans.c
parent6e081a0c57f0f6f14428f7cb78bb22f6848fe4af (diff)
Track unresolvable transaction packages
Rather than free them right away, keep the list on the transaction as we already do with add and remove lists. This is necessary because we may be manipulating pointers the frontend needs to refer to packages, and we are breaking our contract as stated in the alpm_add_pkg() documentation of only freeing packages at the end of a transaction. This fixes an issue found when refactoring the package list display code. Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'lib/libalpm/trans.c')
-rw-r--r--lib/libalpm/trans.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/libalpm/trans.c b/lib/libalpm/trans.c
index a5fa95b9..fbc5feec 100644
--- a/lib/libalpm/trans.c
+++ b/lib/libalpm/trans.c
@@ -236,6 +236,9 @@ void _alpm_trans_free(alpm_trans_t *trans)
return;
}
+ alpm_list_free_inner(trans->unresolvable,
+ (alpm_list_fn_free)_alpm_pkg_free_trans);
+ alpm_list_free(trans->unresolvable);
alpm_list_free_inner(trans->add, (alpm_list_fn_free)_alpm_pkg_free_trans);
alpm_list_free(trans->add);
alpm_list_free_inner(trans->remove, (alpm_list_fn_free)_alpm_pkg_free);