diff options
author | Chantry Xavier <shiningxc@gmail.com> | 2007-11-21 17:10:20 +0100 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2007-11-25 21:00:38 +0100 |
commit | 8bee526d28eaad45e0e1e210cd523e157c71cfae (patch) | |
tree | 31231c33805c4f846564e40294111f0141a2f7ca | |
parent | f5d2150e9db9205a9f208d4144b6d0381f877ad3 (diff) | |
download | pacman-8bee526d28eaad45e0e1e210cd523e157c71cfae.tar.gz pacman-8bee526d28eaad45e0e1e210cd523e157c71cfae.tar.xz |
Fix a memleak in _alpm_sync_free.
An alpm_list_free call was missing.
Also make use of alpm_list_free_inner in both _alpm_sync_free and
_alpm_trans_free.
Signed-off-by: Chantry Xavier <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r-- | lib/libalpm/sync.c | 7 | ||||
-rw-r--r-- | lib/libalpm/trans.c | 10 |
2 files changed, 4 insertions, 13 deletions
diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index 16b1998d..f03a78be 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -74,11 +74,8 @@ void _alpm_sync_free(pmsyncpkg_t *sync) /* TODO wow this is ugly */ if(sync->type == PM_SYNC_TYPE_REPLACE) { - alpm_list_t *tmp; - for(tmp = sync->data; tmp; tmp = alpm_list_next(tmp)) { - _alpm_pkg_free(tmp->data); - tmp->data = NULL; - } + alpm_list_free_inner(sync->data, (alpm_list_fn_free)_alpm_pkg_free); + alpm_list_free(sync->data); sync->data = NULL; } else { _alpm_pkg_free(sync->data); diff --git a/lib/libalpm/trans.c b/lib/libalpm/trans.c index 19ae2b6c..d9988265 100644 --- a/lib/libalpm/trans.c +++ b/lib/libalpm/trans.c @@ -246,8 +246,6 @@ pmtrans_t *_alpm_trans_new() void _alpm_trans_free(pmtrans_t *trans) { - alpm_list_t *i; - ALPM_LOG_FUNC; if(trans == NULL) { @@ -256,13 +254,9 @@ void _alpm_trans_free(pmtrans_t *trans) FREELIST(trans->targets); if(trans->type == PM_TRANS_TYPE_SYNC) { - for(i = trans->packages; i; i = alpm_list_next(i)) { - _alpm_sync_free(i->data); - } + alpm_list_free_inner(trans->packages, (alpm_list_fn_free)_alpm_sync_free); } else { - for(i = trans->packages; i; i = alpm_list_next(i)) { - _alpm_pkg_free(i->data); - } + alpm_list_free_inner(trans->packages, (alpm_list_fn_free)_alpm_pkg_free); } alpm_list_free(trans->packages); |