[pacman-dev] [PATCH 3/4] copy assumeinstalled options

Andrew Gregory andrew.gregory.8 at gmail.com
Thu Jul 16 23:05:33 UTC 2015


All other option setters copy their input.

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

diff --git a/lib/libalpm/handle.c b/lib/libalpm/handle.c
index 15c60cd..02af2dc 100644
--- a/lib/libalpm/handle.c
+++ b/lib/libalpm/handle.c
@@ -584,11 +584,13 @@ int SYMEXPORT alpm_option_remove_ignoregroup(alpm_handle_t *handle, const char *
 
 int SYMEXPORT alpm_option_add_assumeinstalled(alpm_handle_t *handle, const alpm_depend_t *dep)
 {
+	alpm_depend_t *depcpy;
 	CHECK_HANDLE(handle, return -1);
 	ASSERT(dep->mod == ALPM_DEP_MOD_EQ || dep->mod == ALPM_DEP_MOD_ANY,
 			RET_ERR(handle, ALPM_ERR_WRONG_ARGS, -1));
+	ASSERT((depcpy = _alpm_dep_dup(dep)), RET_ERR(handle, ALPM_ERR_MEMORY, -1));
 
-	handle->assumeinstalled = alpm_list_add(handle->assumeinstalled, (void *)dep);
+	handle->assumeinstalled = alpm_list_add(handle->assumeinstalled, depcpy);
 	return 0;
 }
 
@@ -599,7 +601,12 @@ int SYMEXPORT alpm_option_set_assumeinstalled(alpm_handle_t *handle, alpm_list_t
 		alpm_list_free_inner(handle->assumeinstalled, (alpm_list_fn_free)alpm_dep_free);
 		alpm_list_free(handle->assumeinstalled);
 	}
-	handle->assumeinstalled = deps;
+	while(deps) {
+		if(alpm_option_add_assumeinstalled(handle, deps->data) != 0) {
+			return -1;
+		}
+		deps = deps->next;
+	}
 	return 0;
 }
 
diff --git a/src/pacman/conf.c b/src/pacman/conf.c
index ccf8183..8616fed 100644
--- a/src/pacman/conf.c
+++ b/src/pacman/conf.c
@@ -797,9 +797,9 @@ static int setup_libalpm(void)
 		pm_printf(ALPM_LOG_DEBUG, "parsed assume installed: %s %s\n", dep->name, dep->version);
 
 		ret = alpm_option_add_assumeinstalled(handle, dep);
+		alpm_dep_free(dep);
 		if(ret) {
 			pm_printf(ALPM_LOG_ERROR, _("Failed to pass %s entry to libalpm"), "assume-installed");
-			alpm_dep_free(dep);
 			return ret;
 		}
 	 }
-- 
2.4.6


More information about the pacman-dev mailing list