[glib/floating-variants-grr] Always ref-sink variants in g_object_set
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/floating-variants-grr] Always ref-sink variants in g_object_set
- Date: Wed, 5 Oct 2022 11:17:47 +0000 (UTC)
commit 64f5a1637efa9290308486fb6aebb3c069167f7e
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Oct 5 07:16:20 2022 -0400
Always ref-sink variants in g_object_set
When collecting varargs, ignore the NOCOPY_CONTENTS
flag for variants. That is what our docs advice for
refcounted types, and it fixes a regression that
was inadvertendly introduced when we stopped doing
some extra GValue copies.
Fixes: #2774
gobject/gvaluetypes.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
---
diff --git a/gobject/gvaluetypes.c b/gobject/gvaluetypes.c
index 03f713538b..75998fe7e8 100644
--- a/gobject/gvaluetypes.c
+++ b/gobject/gvaluetypes.c
@@ -388,12 +388,8 @@ value_collect_variant (GValue *value,
{
if (!collect_values[0].v_pointer)
value->data[0].v_pointer = NULL;
- else if (collect_flags & G_VALUE_NOCOPY_CONTENTS)
- {
- value->data[0].v_pointer = collect_values[0].v_pointer;
- value->data[1].v_uint = G_VALUE_NOCOPY_CONTENTS;
- }
else
+ /* never honour G_VALUE_NOCOPY_CONTENTS for ref-counted types */
value->data[0].v_pointer = g_variant_ref_sink (collect_values[0].v_pointer);
return NULL;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]