From fac9ac6c4011ff643b7335c7381f6219b07bba80 Mon Sep 17 00:00:00 2001 From: Andrew Gregory Date: Mon, 6 Jan 2014 11:52:24 -0500 Subject: sync_prepare: manually set pm_errno _alpm_resolvedeps resets pm_errno to 0 by calling alpm_checkdeps. Whenever the last call succeeded, pm_errno was not properly set, preventing pacman from properly handling the error and leaking additional memory. We know pm_errno should be ALPM_ERR_UNSATISFIED_DEPS if resolvedeps has failed, so just set it manually. Signed-off-by: Andrew Gregory Signed-off-by: Allan McRae --- lib/libalpm/sync.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index f1add246..4a76438e 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -442,7 +442,6 @@ int _alpm_sync_prepare(alpm_handle_t *handle, alpm_list_t **data) see if they'd like to ignore them rather than failing the sync */ if(unresolvable != NULL) { int remove_unresolvable = 0; - alpm_errno_t saved_err = handle->pm_errno; QUESTION(handle, ALPM_QUESTION_REMOVE_PKGS, unresolvable, NULL, NULL, &remove_unresolvable); if(remove_unresolvable) { @@ -458,7 +457,7 @@ int _alpm_sync_prepare(alpm_handle_t *handle, alpm_list_t **data) } } else { /* pm_errno was set by resolvedeps, callback may have overwrote it */ - handle->pm_errno = saved_err; + handle->pm_errno = ALPM_ERR_UNSATISFIED_DEPS; alpm_list_free(resolved); ret = -1; goto cleanup; -- cgit v1.2.3-70-g09d2