Use memcpy in g_string_append_vprintf (#57693).
authorMathias Hasselmann <mathias.hasselmann@gmx.de>
Fri, 22 Jun 2007 17:04:07 +0000 (17:04 +0000)
committerMathias Hasselmann <hasselmm@src.gnome.org>
Fri, 22 Jun 2007 17:04:07 +0000 (17:04 +0000)
2007-06-22  Mathias Hasselmann  <mathias.hasselmann@gmx.de>

* glib/gstring.c: Use memcpy in g_string_append_vprintf (#57693).

svn path=/trunk/; revision=5584

ChangeLog
glib/gstring.c

index 0941ec098f96cd0d57118a61ac22665eec7c6335..97ee40d3b552e5554c1d619a277e35110f6d8ddf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2007-06-22  Mathias Hasselmann  <mathias.hasselmann@gmx.de>
+
+       * glib/gstring.c: Use memcpy in g_string_append_vprintf (#57693).
+
 2007-06-18  Mathias Hasselmann  <mathias.hasselmann@gmx.de>
 
        * glib/gstring.c: Restore old behaviour of 
index f8cc7da3421f555261bed0981785339677aba1e4..aeaf1d21a5b322e96ea337f0b43e4248626e701d 100644 (file)
@@ -1278,15 +1278,21 @@ g_string_append_vprintf (GString     *string,
                         const gchar *fmt,
                         va_list      args)
 {
-  gchar *buffer;
-  gint length;
+  gchar *buf;
+  gint len;
   
   g_return_if_fail (string != NULL);
   g_return_if_fail (fmt != NULL);
 
-  length = g_vasprintf (&buffer, fmt, args);
-  g_string_append_len (string, buffer, length);
-  g_free (buffer);
+  len = g_vasprintf (&buf, fmt, args);
+
+  if (len >= 0)
+    {
+      g_string_maybe_expand (string, len);
+      memcpy (string->str + string->len, buf, len + 1);
+      string->len += len;
+      g_free (buf);
+    }
 }
 
 /**