From ba17efc3961b094cc853b66d66e09a3d8b0444a1 Mon Sep 17 00:00:00 2001 From: Will Thompson Date: Thu, 9 Sep 2010 17:24:00 +0100 Subject: [PATCH] g_strdup_value_contents(): dump GStrv more usefully Previously, dumping a GValue holding a GStrv just yielded "((GStrv *) 0xDEADBEEF)". I think it'd be more useful to dump a Python list-style representation of the GStrv's contents, if it's not NULL. Fixes: --- gobject/gvaluetypes.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gobject/gvaluetypes.c b/gobject/gvaluetypes.c index 8bd612f21..aa22b2d51 100644 --- a/gobject/gvaluetypes.c +++ b/gobject/gvaluetypes.c @@ -1339,6 +1339,25 @@ g_strdup_value_contents (const GValue *value) contents = g_strdup_printf ("((%s*) %p)", G_OBJECT_TYPE_NAME (p), p); else if (G_VALUE_HOLDS_PARAM (value)) contents = g_strdup_printf ("((%s*) %p)", G_PARAM_SPEC_TYPE_NAME (p), p); + else if (G_VALUE_HOLDS (value, G_TYPE_STRV)) + { + GStrv strv = g_value_get_boxed (value); + GString *tmp = g_string_new ("["); + + while (*strv != NULL) + { + gchar *escaped = g_strescape (*strv, NULL); + + g_string_append_printf (tmp, "\"%s\"", escaped); + g_free (escaped); + + if (*++strv != NULL) + g_string_append (tmp, ", "); + } + + g_string_append (tmp, "]"); + contents = g_string_free (tmp, FALSE); + } else if (G_VALUE_HOLDS_BOXED (value)) contents = g_strdup_printf ("((%s*) %p)", g_type_name (G_VALUE_TYPE (value)), p); else if (G_VALUE_HOLDS_POINTER (value))