[pacman-dev] [PATCH] Add GOTO_ERR() macro to set error and then goto a label

Anatol Pomozov anatol.pomozov at gmail.com
Fri Mar 6 20:00:15 UTC 2020


This is a macro similar to RET_ERR but useful in the case when we need
to record an error and then jump to some cleanup section.

Signed-off-by: Anatol Pomozov <anatol.pomozov at gmail.com>
---
 lib/libalpm/util.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lib/libalpm/util.h b/lib/libalpm/util.h
index 9827b2c1..ce80b32b 100644
--- a/lib/libalpm/util.h
+++ b/lib/libalpm/util.h
@@ -71,6 +71,11 @@ void _alpm_alloc_fail(size_t size);
 	(handle)->pm_errno = (err); \
 	return (ret); } while(0)
 
+#define GOTO_ERR(handle, err, label) do { \
+	_alpm_log(handle, ALPM_LOG_DEBUG, "got error %d at %s:%d : %s\n", err, __func__, __LINE__, alpm_strerror(err)); \
+	(handle)->pm_errno = (err); \
+	goto label; } while(0)
+
 #define RET_ERR_ASYNC_SAFE(handle, err, ret) do { \
 	(handle)->pm_errno = (err); \
 	return (ret); } while(0)
-- 
2.25.1


More information about the pacman-dev mailing list