[glib] gdbusutils: Fix a memory leak in g_dbus_gvalue_to_gvariant()



commit 37d9b0c6995f97ea0f744650aaf5179081f878ba
Author: Philip Withnall <withnall endlessm com>
Date:   Wed Nov 15 12:26:26 2017 +0000

    gdbusutils: Fix a memory leak in g_dbus_gvalue_to_gvariant()
    
    g_variant_get_normal_form() doesn’t necessarily return a floating
    GVariant, so we have to take, rather than sink, the ref.
    
    This fixes a lot of leaks with gdbus-codegen-generated code.
    
    Signed-off-by: Philip Withnall <withnall endlessm com>
    
    https://bugzilla.gnome.org/show_bug.cgi?id=741167

 gio/gdbusutils.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
---
diff --git a/gio/gdbusutils.c b/gio/gdbusutils.c
index ff036c7..bfca02d 100644
--- a/gio/gdbusutils.c
+++ b/gio/gdbusutils.c
@@ -685,7 +685,7 @@ g_dbus_gvalue_to_gvariant (const GValue       *gvalue,
     {
       GVariant *untrusted_empty;
       untrusted_empty = g_variant_new_from_data (type, NULL, 0, FALSE, NULL, NULL);
-      ret = g_variant_ref_sink (g_variant_get_normal_form (untrusted_empty));
+      ret = g_variant_take_ref (g_variant_get_normal_form (untrusted_empty));
       g_variant_unref (untrusted_empty);
     }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]