diff --git a/gobject/gvaluetypes.c b/gobject/gvaluetypes.c index 35b85c684..755ddeae1 100644 --- a/gobject/gvaluetypes.c +++ b/gobject/gvaluetypes.c @@ -271,7 +271,16 @@ static void value_copy_string (const GValue *src_value, GValue *dest_value) { - dest_value->data[0].v_pointer = g_strdup (src_value->data[0].v_pointer); + if (src_value->data[1].v_uint & G_VALUE_NOCOPY_CONTENTS) + { + dest_value->data[0].v_pointer = src_value->data[0].v_pointer; + dest_value->data[1].v_uint = src_value->data[1].v_uint; + } + else + { + dest_value->data[0].v_pointer = g_strdup (src_value->data[0].v_pointer); + dest_value->data[1].v_uint = src_value->data[1].v_uint; + } } static gchar*