Restore old behaviour of g_string_append_vprintf: g_vasprintf seems to be
authorMathias Hasselmann <mathias.hasselmann@gmx.de>
Mon, 18 Jun 2007 21:14:49 +0000 (21:14 +0000)
committerMathias Hasselmann <hasselmm@src.gnome.org>
Mon, 18 Jun 2007 21:14:49 +0000 (21:14 +0000)
2007-06-18  Mathias Hasselmann  <mathias.hasselmann@gmx.de>

* glib/gstring.c: Restore old behaviour of
g_string_append_vprintf: g_vasprintf seems to be faster
than g_printf_string_upper_bound (#57693).

svn path=/trunk/; revision=5581

ChangeLog
glib/gstring.c

index ab8611f..0941ec0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-06-18  Mathias Hasselmann  <mathias.hasselmann@gmx.de>
+
+       * glib/gstring.c: Restore old behaviour of 
+       g_string_append_vprintf: g_vasprintf seems to be faster
+       than g_printf_string_upper_bound (#57693).
+
 2007-06-18  Matthias Clasen  <mclasen@redhat.com>
 
        * glib/gutils.c (g_get_home_dir): Add some motivation.
index ed15223..f8cc7da 100644 (file)
@@ -1278,19 +1278,15 @@ g_string_append_vprintf (GString     *string,
                         const gchar *fmt,
                         va_list      args)
 {
-  va_list sneak;
-  gsize length;
-
+  gchar *buffer;
+  gint length;
+  
   g_return_if_fail (string != NULL);
   g_return_if_fail (fmt != NULL);
 
-  G_VA_COPY (sneak, args);
-  length = g_printf_string_upper_bound (fmt, sneak);
-  va_end (sneak);
-
-  g_string_maybe_expand (string, length);
-  length = g_vsnprintf (string->str + string->len, length, fmt, args);
-  string->len += length;
+  length = g_vasprintf (&buffer, fmt, args);
+  g_string_append_len (string, buffer, length);
+  g_free (buffer);
 }
 
 /**