2003-06-06 Matthias Clasen <maclas@gmx.de>
+ * glib/gstring.c (g_string_append_printf_internal): Use
+ g_vasprintf() and g_string_append_len(), thus enabling embedded
+ nuls in the result of g_string_printf(). (#92492, Owen Taylor)
+
+ * tests/string-test.c: Add a test for embedded nuls in the
+ result of g_string_printf().
+
* glib/gprintf.[ch]: Synchronize argument names with headers and docs.
(g_vasprintf): An implementation of vasprintf(), code was lifted
from g_strdup_vprintf(). (#112365)
2003-06-06 Matthias Clasen <maclas@gmx.de>
+ * glib/gstring.c (g_string_append_printf_internal): Use
+ g_vasprintf() and g_string_append_len(), thus enabling embedded
+ nuls in the result of g_string_printf(). (#92492, Owen Taylor)
+
+ * tests/string-test.c: Add a test for embedded nuls in the
+ result of g_string_printf().
+
* glib/gprintf.[ch]: Synchronize argument names with headers and docs.
(g_vasprintf): An implementation of vasprintf(), code was lifted
from g_strdup_vprintf(). (#112365)
2003-06-06 Matthias Clasen <maclas@gmx.de>
+ * glib/gstring.c (g_string_append_printf_internal): Use
+ g_vasprintf() and g_string_append_len(), thus enabling embedded
+ nuls in the result of g_string_printf(). (#92492, Owen Taylor)
+
+ * tests/string-test.c: Add a test for embedded nuls in the
+ result of g_string_printf().
+
* glib/gprintf.[ch]: Synchronize argument names with headers and docs.
(g_vasprintf): An implementation of vasprintf(), code was lifted
from g_strdup_vprintf(). (#112365)
2003-06-06 Matthias Clasen <maclas@gmx.de>
+ * glib/gstring.c (g_string_append_printf_internal): Use
+ g_vasprintf() and g_string_append_len(), thus enabling embedded
+ nuls in the result of g_string_printf(). (#92492, Owen Taylor)
+
+ * tests/string-test.c: Add a test for embedded nuls in the
+ result of g_string_printf().
+
* glib/gprintf.[ch]: Synchronize argument names with headers and docs.
(g_vasprintf): An implementation of vasprintf(), code was lifted
from g_strdup_vprintf(). (#112365)
2003-06-06 Matthias Clasen <maclas@gmx.de>
+ * glib/gstring.c (g_string_append_printf_internal): Use
+ g_vasprintf() and g_string_append_len(), thus enabling embedded
+ nuls in the result of g_string_printf(). (#92492, Owen Taylor)
+
+ * tests/string-test.c: Add a test for embedded nuls in the
+ result of g_string_printf().
+
* glib/gprintf.[ch]: Synchronize argument names with headers and docs.
(g_vasprintf): An implementation of vasprintf(), code was lifted
from g_strdup_vprintf(). (#112365)
2003-06-06 Matthias Clasen <maclas@gmx.de>
+ * glib/gstring.c (g_string_append_printf_internal): Use
+ g_vasprintf() and g_string_append_len(), thus enabling embedded
+ nuls in the result of g_string_printf(). (#92492, Owen Taylor)
+
+ * tests/string-test.c: Add a test for embedded nuls in the
+ result of g_string_printf().
+
* glib/gprintf.[ch]: Synchronize argument names with headers and docs.
(g_vasprintf): An implementation of vasprintf(), code was lifted
from g_strdup_vprintf(). (#112365)
#include <ctype.h>
#include "glib.h"
+#include "gprintf.h"
struct _GStringChunk
va_list args)
{
gchar *buffer;
-
- buffer = g_strdup_vprintf (fmt, args);
- g_string_append (string, buffer);
+ gint length;
+
+ length = g_vasprintf (&buffer, fmt, args);
+ g_string_append_len (string, buffer, length);
g_free (buffer);
}
g_assert ( memcmp(string1->str, "fiddle\0xyzzy", 13) == 0);
g_string_insert(string1, 1, "QED");
g_assert ( memcmp(string1->str, "fQEDiddle\0xyzzy", 16) == 0);
+ g_string_printf (string1, "fiddle%cxyzzy", '\0');
+ g_assert (string1->len == 12);
+ g_assert (memcmp (string1->str, "fiddle\0xyzzy", 13) == 0);
+
g_string_free (string1, TRUE);
g_string_free (string2, TRUE);