[PATCH v2] fix: release transaction before releasing handle
Kevin Morris
kevr at 0cost.org
Sat Nov 20 20:03:20 UTC 2021
If a transaction exists, release it if possible. If
`alpm_trans_release` errors out (returns a non-zero),
return a -1 in `alpm_release`.
This patch addresses the following issue observed in `pyalpm`:
https://gitlab.archlinux.org/archlinux/pyalpm/-/issues/25, where
`pyalpm` ends up raising twice due to an unexpected failure during
handle release, while a transaction is locked.
This is a modified version of
https://patchwork.archlinux.org/project/pacman/patch/20200119191833.581492-1-morganamilo@archlinux.org/
and is a derivation of his (Morganamilo's) work.
Signed-off-by: Kevin Morris <kevr at 0cost.org>
---
lib/libalpm/alpm.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/lib/libalpm/alpm.c b/lib/libalpm/alpm.c
index 6708e202..47d02fea 100644
--- a/lib/libalpm/alpm.c
+++ b/lib/libalpm/alpm.c
@@ -100,6 +100,10 @@ int SYMEXPORT alpm_release(alpm_handle_t *myhandle)
CHECK_HANDLE(myhandle, return -1);
+ if (myhandle->trans != NULL && alpm_trans_release(myhandle)) {
+ return -1;
+ }
+
/* close local database */
db = myhandle->db_local;
if(db) {
--
2.34.0
More information about the pacman-dev
mailing list