From e3efbd30a20f40e5c2e0c2d7a92ee7221f7bd2a8 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Fri, 15 May 2020 17:28:45 +0200 Subject: [PATCH] gvalue: Static strings should not be copied When doing copies of GValue backed by static strings, the contents should not be copied --- gobject/gvaluetypes.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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*