From fdbad1cfd6ad6da9fab631f945ab8d2e85228fdf Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 13 Jun 2008 11:06:15 +0100 Subject: Escape to special characters in JsonGenerator When using json-glib to write a blog system, some deserialized objects were not been interpreted by javascript because there were line breaks in generated strings. Patch from Lincoln de Sousa. Bug #958 - JsonGenerator does not escape special characters Signed-off-by: Emmanuele Bassi --- json-glib/json-generator.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/json-glib/json-generator.c b/json-glib/json-generator.c index 6b18bd9..6529ea6 100644 --- a/json-glib/json-generator.c +++ b/json-glib/json-generator.c @@ -257,7 +257,22 @@ dump_value (JsonGenerator *generator, break; case G_TYPE_STRING: - g_string_append_printf (buffer, "\"%s\"", g_value_get_string (&value)); + { + gchar *tmp; + gchar *exceptions = g_malloc (128); + gint chr, i; + + /* non-ascii characters can't be escaped, otherwise utf-8 + * chars will break */ + for (i = 0, chr = 0x7f; chr <= 0xff; chr++, i++) + exceptions[i] = chr; + + tmp = g_strescape (g_value_get_string (&value), exceptions); + g_free (exceptions); + + g_string_append_printf (buffer, "\"%s\"", tmp); + g_free (tmp); + } break; case G_TYPE_DOUBLE: -- cgit v1.2.1