json-glib r48 - in branches/json-glib-0-6: . json-glib
- From: ebassi svn gnome org
- To: svn-commits-list gnome org
- Subject: json-glib r48 - in branches/json-glib-0-6: . json-glib
- Date: Fri, 13 Jun 2008 10:37:57 +0000 (UTC)
Author: ebassi
Date: Fri Jun 13 10:37:57 2008
New Revision: 48
URL: http://svn.gnome.org/viewvc/json-glib?rev=48&view=rev
Log:
2008-06-13 Emmanuele Bassi <ebassi openedhand com>
Bug #958 - JsonGenerator does not escape special characters
* json-glib/json-generator.c (dump_value): Escape the special
ASCII characters. (Lincoln de Sousa)
Modified:
branches/json-glib-0-6/ChangeLog
branches/json-glib-0-6/json-glib/json-generator.c
Modified: branches/json-glib-0-6/json-glib/json-generator.c
==============================================================================
--- branches/json-glib-0-6/json-glib/json-generator.c (original)
+++ branches/json-glib-0-6/json-glib/json-generator.c Fri Jun 13 10:37:57 2008
@@ -235,12 +235,13 @@
guint indent = priv->indent;
GValue value = { 0, };
GString *buffer;
- guint i;
buffer = g_string_new ("");
if (pretty)
{
+ guint i;
+
for (i = 0; i < (level * indent); i++)
g_string_append_c (buffer, priv->indent_char);
}
@@ -257,7 +258,22 @@
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:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]