[seed] libseed: Constructor sometimes steals a ref to non INITIALLY_UNOWNED objects



commit 31b783239a3f4145f6d1061e2f6ff4711455921c
Author: Robert Carr <racarr svn gnome org>
Date:   Wed May 20 02:48:17 2009 -0400

    libseed: Constructor sometimes steals a ref to non INITIALLY_UNOWNED objects
---
 libseed/seed-engine.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/libseed/seed-engine.c b/libseed/seed-engine.c
index 25ec6cf..15ef966 100644
--- a/libseed/seed-engine.c
+++ b/libseed/seed-engine.c
@@ -196,8 +196,11 @@ seed_gobject_constructor_invoked (JSContextRef ctx,
 
   gobject = g_object_newv (type, nparams, params);
 
-  if (G_IS_INITIALLY_UNOWNED (gobject))
-    g_object_ref_sink (gobject);
+  if (G_IS_INITIALLY_UNOWNED (gobject) && 
+      !g_object_is_floating(gobject))
+    g_object_ref(gobject);
+  else if (g_object_is_floating(gobject))
+    g_object_ref_sink(gobject);
 
   if (!gobject)
     ret = (JSObjectRef) JSValueMakeNull (ctx);
@@ -209,8 +212,7 @@ seed_gobject_constructor_invoked (JSContextRef ctx,
       g_value_unset (&params[i].value);
     }
 
-  if (G_IS_INITIALLY_UNOWNED (gobject))
-    g_object_unref (gobject);
+  g_object_unref (gobject);
 
   g_type_class_unref (oclass);
 



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