Use g_vasprintf() and g_string_append_len(), thus enabling embedded nuls

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().
This commit is contained in:
Matthias Clasen 2003-06-05 23:04:21 +00:00 committed by Matthias Clasen
parent 53efcd835d
commit cc777da9c1
8 changed files with 51 additions and 3 deletions

View File

@ -1,5 +1,12 @@
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)

View File

@ -1,5 +1,12 @@
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)

View File

@ -1,5 +1,12 @@
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)

View File

@ -1,5 +1,12 @@
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)

View File

@ -1,5 +1,12 @@
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)

View File

@ -1,5 +1,12 @@
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)

View File

@ -40,6 +40,7 @@
#include <ctype.h>
#include "glib.h"
#include "gprintf.h"
struct _GStringChunk
@ -780,9 +781,10 @@ g_string_append_printf_internal (GString *string,
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);
}

View File

@ -208,6 +208,10 @@ main (int argc,
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);