[pacman-dev] [PATCH] fix improper FREELIST calls

Andrew Gregory andrew.gregory.8 at gmail.com
Wed Aug 20 17:09:52 EDT 2014


* conflicts need to be freed with alpm_conflict_free
* sync dbs need to be unregistered and are handled by alpm_release

Signed-off-by: Andrew Gregory <andrew.gregory.8 at gmail.com>
---
 lib/libalpm/conflict.c | 8 ++++++--
 lib/libalpm/handle.c   | 1 -
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/lib/libalpm/conflict.c b/lib/libalpm/conflict.c
index 961e3a7..db07102 100644
--- a/lib/libalpm/conflict.c
+++ b/lib/libalpm/conflict.c
@@ -449,7 +449,9 @@ alpm_list_t *_alpm_db_find_fileconflicts(alpm_handle_t *handle,
 
 					conflicts = add_fileconflict(handle, conflicts, path, p1, p2);
 					if(handle->pm_errno == ALPM_ERR_MEMORY) {
-						FREELIST(conflicts);
+						alpm_list_free_inner(conflicts,
+								(alpm_list_fn_free) alpm_conflict_free);
+						alpm_list_free(conflicts);
 						alpm_list_free(common_files);
 						return NULL;
 					}
@@ -622,7 +624,9 @@ alpm_list_t *_alpm_db_find_fileconflicts(alpm_handle_t *handle,
 			if(!resolved_conflict) {
 				conflicts = add_fileconflict(handle, conflicts, path, p1, NULL);
 				if(handle->pm_errno == ALPM_ERR_MEMORY) {
-					FREELIST(conflicts);
+					alpm_list_free_inner(conflicts,
+							(alpm_list_fn_free) alpm_conflict_free);
+					alpm_list_free(conflicts);
 					alpm_list_free(tmpfiles);
 					return NULL;
 				}
diff --git a/lib/libalpm/handle.c b/lib/libalpm/handle.c
index fdd269b..7652d1f 100644
--- a/lib/libalpm/handle.c
+++ b/lib/libalpm/handle.c
@@ -81,7 +81,6 @@ void _alpm_handle_free(alpm_handle_t *handle)
 	FREE(handle->lockfile);
 	FREE(handle->arch);
 	FREE(handle->gpgdir);
-	FREELIST(handle->dbs_sync);
 	FREELIST(handle->noupgrade);
 	FREELIST(handle->noextract);
 	FREELIST(handle->ignorepkg);
-- 
2.1.0


More information about the pacman-dev mailing list