summaryrefslogtreecommitdiffstats
path: root/lib/libalpm
diff options
context:
space:
mode:
authorAndrew Gregory <andrew.gregory.8@gmail.com>2015-07-17 01:05:33 +0200
committerAllan McRae <allan@archlinux.org>2015-08-08 02:41:14 +0200
commit48f4efd9a18966509bd599684e77d3ad49d5b082 (patch)
treedce7c2e8ecf0d9ba28fbd4f7c463561344eadc52 /lib/libalpm
parentccd3a3eb9fad7b4c311a6bfb57b69a7a1a13c46a (diff)
downloadpacman-48f4efd9a18966509bd599684e77d3ad49d5b082.tar.gz
pacman-48f4efd9a18966509bd599684e77d3ad49d5b082.tar.xz
copy assumeinstalled options
All other option setters copy their input. Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'lib/libalpm')
-rw-r--r--lib/libalpm/handle.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/libalpm/handle.c b/lib/libalpm/handle.c
index a6a5861f..f336bf2b 100644
--- a/lib/libalpm/handle.c
+++ b/lib/libalpm/handle.c
@@ -591,11 +591,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;
}
@@ -606,7 +608,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;
}