diff mbox

[2/7] error: Make error_setg() a function

Message ID 1435001200-20610-3-git-send-email-armbru@redhat.com
State New
Headers show

Commit Message

Markus Armbruster June 22, 2015, 7:26 p.m. UTC
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(-)

Comments

Eric Blake June 22, 2015, 9:38 p.m. UTC | #1
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...)
Markus Armbruster June 23, 2015, 7:45 a.m. UTC | #2
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 mbox

Patch

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, ...)
 {