[pygobject] when converting an object with transfer none, make sure the wrapper owns a ref



commit 611f58b99851328653af4930f188c33eccaa9f6f
Author: John (J5) Palmieri <johnp redhat com>
Date:   Fri Oct 14 16:42:32 2011 -0400

    when converting an object with transfer none, make sure the wrapper owns a ref
    
    https://bugzilla.gnome.org/show_bug.cgi?id=661359

 gi/pygi-argument.c |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)
---
diff --git a/gi/pygi-argument.c b/gi/pygi-argument.c
index 4564f3d..3b36c2f 100644
--- a/gi/pygi-argument.c
+++ b/gi/pygi-argument.c
@@ -1662,6 +1662,16 @@ _pygi_argument_to_object (GIArgument  *arg,
                         Py_INCREF (object);
                         break;
                     }
+
+                    /* since we will unref the object when the
+                     * wrapper is destroyed and we don't want
+                     * GTK removing the object while the
+                     * wrapper is live, we take a gobject reference
+                     * when one is not transfered to us
+                     */
+                    if (transfer == GI_TRANSFER_NOTHING)
+                        g_object_ref (G_OBJECT(arg->v_pointer));
+
                     object = pygobject_new (arg->v_pointer);
                     break;
                 default:



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