From 80ae80149a956adec75df159f66a9cb88e91f5cc Mon Sep 17 00:00:00 2001 From: Anatol Pomozov Date: Fri, 6 Mar 2020 12:00:15 -0800 Subject: Add GOTO_ERR() macro to set error and then goto a label 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 Signed-off-by: Allan McRae --- lib/libalpm/util.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/libalpm/util.h b/lib/libalpm/util.h index 9827b2c1..3aeb1b60 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 (%s: %d) : %s\n", err, __func__, __FILE__, __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) -- cgit v1.2.3-70-g09d2