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

Allan McRae allan at archlinux.org
Sun Mar 8 04:37:27 UTC 2020


On 7/3/20 6:00 am, Anatol Pomozov wrote:
> 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)
> +

This is OK.  And there are dozens of places it could be used.

Do we need __LINE__?  I note we don't use it in RET_ERR, and I am not a
fan of it...  Function and error should be enough, or we need more
specific error codes.

A


More information about the pacman-dev mailing list