From 841e531c519228b68a447a61d703d21c5ff6d37f Mon Sep 17 00:00:00 2001
From: Andrew Gregory <andrew.gregory.8@gmail.com>
Date: Mon, 26 Jan 2015 13:19:29 -0500
Subject: trans_commit: restore pm_errno after updating log

If the call to alpm_logaction failed it would overwrite pm_errno,
leading to error messages unrelated to the actual reason the transaction
failed.

Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
---
 lib/libalpm/trans.c | 4 ++++
 1 file changed, 4 insertions(+)

(limited to 'lib')

diff --git a/lib/libalpm/trans.c b/lib/libalpm/trans.c
index 7cdb096f..e1caa5e3 100644
--- a/lib/libalpm/trans.c
+++ b/lib/libalpm/trans.c
@@ -192,13 +192,17 @@ int SYMEXPORT alpm_trans_commit(alpm_handle_t *handle, alpm_list_t **data)
 	if(trans->add == NULL) {
 		if(_alpm_remove_packages(handle, 1) == -1) {
 			/* pm_errno is set by _alpm_remove_packages() */
+			alpm_errno_t save = handle->pm_errno;
 			alpm_logaction(handle, ALPM_CALLER_PREFIX, "transaction failed\n");
+			handle->pm_errno = save;
 			return -1;
 		}
 	} else {
 		if(_alpm_sync_commit(handle, data) == -1) {
 			/* pm_errno is set by _alpm_sync_commit() */
+			alpm_errno_t save = handle->pm_errno;
 			alpm_logaction(handle, ALPM_CALLER_PREFIX, "transaction failed\n");
+			handle->pm_errno = save;
 			return -1;
 		}
 	}
-- 
cgit v1.2.3-70-g09d2