summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/pacman/pacman.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
index 2b748a1c..aa128261 100644
--- a/src/pacman/pacman.c
+++ b/src/pacman/pacman.c
@@ -207,9 +207,14 @@ static void cleanup(int signum)
pm_fprintf(stderr, PM_LOG_ERROR, "Internal pacman error: Segmentation fault.\n"
"Please submit a full bug report with --debug if appropriate.\n");
exit(signum);
- } else if((signum == SIGINT) && (alpm_trans_release() == -1)
- && (pm_errno == PM_ERR_TRANS_COMMITING)) {
- return;
+ } else if((signum == SIGINT)) {
+ if(alpm_trans_interrupt() == 0) {
+ /* a transaction is being interrupted, don't exit pacman yet. */
+ return;
+ } else {
+ /* no commiting transaction, we can release it now and then exit pacman */
+ alpm_trans_release();
+ }
}
/* free alpm library resources */