]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
_dbus_set_error_valist: add
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Mon, 2 Feb 2015 18:15:02 +0000 (18:15 +0000)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Tue, 3 Feb 2015 16:19:20 +0000 (16:19 +0000)
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=88810
Reviewed-by: Philip Withnall
dbus/dbus-errors.c
dbus/dbus-internals.h

index 5d8f194e3c51a0e652b71459e68f60abde0596f2..5a305ca0c70fda88f625519d125e9256e35fbe7c 100644 (file)
@@ -356,8 +356,6 @@ dbus_set_error (DBusError  *error,
                const char *format,
                ...)
 {
-  DBusRealError *real;
-  DBusString str;
   va_list args;
   
   if (error == NULL)
@@ -366,7 +364,26 @@ dbus_set_error (DBusError  *error,
   /* it's a bug to pile up errors */
   _dbus_return_if_error_is_set (error);
   _dbus_return_if_fail (name != NULL);
-  
+
+  va_start (args, format);
+  _dbus_set_error_valist (error, name, format, args);
+  va_end (args);
+}
+
+void
+_dbus_set_error_valist (DBusError  *error,
+                        const char *name,
+                        const char *format,
+                        va_list     args)
+{
+  DBusRealError *real;
+  DBusString str;
+
+  _dbus_assert (name != NULL);
+
+  if (error == NULL)
+    return;
+
   _dbus_assert (error->name == NULL);
   _dbus_assert (error->message == NULL);
 
@@ -384,14 +401,11 @@ dbus_set_error (DBusError  *error,
     }
   else
     {
-      va_start (args, format);
       if (!_dbus_string_append_printf_valist (&str, format, args))
         {
           _dbus_string_free (&str);
-          va_end (args);
           goto nomem;
         }
-      va_end (args);
     }
 
   real = (DBusRealError *)error;
index 4658b67b668370055e7cb77c3b0378b52a1dbd9a..6b487f5d38539891f08c13fe30cbe582ced77205 100644 (file)
@@ -263,6 +263,10 @@ void _dbus_verbose_bytes_of_string (const DBusString    *str,
 
 extern const char *_dbus_no_memory_message;
 #define _DBUS_SET_OOM(error) dbus_set_error_const ((error), DBUS_ERROR_NO_MEMORY, _dbus_no_memory_message)
+void _dbus_set_error_valist (DBusError  *error,
+                             const char *name,
+                             const char *format,
+                             va_list     args) _DBUS_GNUC_PRINTF (3, 0);
 
 #ifdef DBUS_ENABLE_EMBEDDED_TESTS
 /* Memory debugging */