Message ID | 1435001200-20610-3-git-send-email-armbru@redhat.com |
---|---|
State | New |
Headers | show |
On 06/22/2015 01:26 PM, Markus Armbruster wrote: > Saves a tiny amount of code at every call site. > > Signed-off-by: Markus Armbruster <armbru@redhat.com> > --- > include/qapi/error.h | 4 ++-- > util/error.c | 9 +++++++++ > 2 files changed, 11 insertions(+), 2 deletions(-) Reviewed-by: Eric Blake <eblake@redhat.com> (Interesting that you turn it back into a macro later in the series...)
Eric Blake <eblake@redhat.com> writes: > On 06/22/2015 01:26 PM, Markus Armbruster wrote: >> Saves a tiny amount of code at every call site. >> >> Signed-off-by: Markus Armbruster <armbru@redhat.com> >> --- >> include/qapi/error.h | 4 ++-- >> util/error.c | 9 +++++++++ >> 2 files changed, 11 insertions(+), 2 deletions(-) > > Reviewed-by: Eric Blake <eblake@redhat.com> > > (Interesting that you turn it back into a macro later in the series...) Yes, in PATCH 7, but even then error_setg_internal() remains a function, not a macro wrapper around error_set_internal(), thus we still save code to pass a 0 argument at every call site. Of course, PATCH 7 increases code size quite a bit more than this patch decreases it: this patch deletes "pass 0 argument", PATCH 7 adds "pass __FILE__ and __LINE__ arguments". Plus the __FILE_ literals, but those should be in cold memory. If the increase bothers us, we could add suitable #ifdeffery to optionally suppress it. Seems not worth it to me.
diff --git a/include/qapi/error.h b/include/qapi/error.h index f44c451..34af4e1 100644 --- a/include/qapi/error.h +++ b/include/qapi/error.h @@ -51,8 +51,8 @@ void error_set_win32(Error **errp, int win32_err, ErrorClass err_class, /** * Same as error_set(), but sets a generic error */ -#define error_setg(errp, fmt, ...) \ - error_set(errp, ERROR_CLASS_GENERIC_ERROR, fmt, ## __VA_ARGS__) +void error_setg(Error **errp, const char *fmt, ...) + GCC_FMT_ATTR(2, 3); #define error_setg_errno(errp, os_error, fmt, ...) \ error_set_errno(errp, os_error, ERROR_CLASS_GENERIC_ERROR, \ fmt, ## __VA_ARGS__) diff --git a/util/error.c b/util/error.c index 19982b1..7b687f6 100644 --- a/util/error.c +++ b/util/error.c @@ -56,6 +56,15 @@ void error_set(Error **errp, ErrorClass err_class, const char *fmt, ...) va_end(ap); } +void error_setg(Error **errp, const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + error_setv(errp, ERROR_CLASS_GENERIC_ERROR, fmt, ap); + va_end(ap); +} + void error_set_errno(Error **errp, int os_errno, ErrorClass err_class, const char *fmt, ...) {
Saves a tiny amount of code at every call site. Signed-off-by: Markus Armbruster <armbru@redhat.com> --- include/qapi/error.h | 4 ++-- util/error.c | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-)