diff --git a/ChangeLog b/ChangeLog index ab8611fa8..0941ec098 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-06-18 Mathias Hasselmann + + * 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 * glib/gutils.c (g_get_home_dir): Add some motivation. diff --git a/glib/gstring.c b/glib/gstring.c index ed15223d8..f8cc7da34 100644 --- a/glib/gstring.c +++ b/glib/gstring.c @@ -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); } /**