[glib] Make object_interface_check_properties work



commit 068d53358bd366c26cff604a3de53b3cf734b08f
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Dec 27 23:41:10 2010 -0500

    Make object_interface_check_properties work
    
    As pointed out in bug 637738, it does not currently work, since
    g_type_class_peek always returns NULL.

 gobject/gobject.c |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 deletions(-)
---
diff --git a/gobject/gobject.c b/gobject/gobject.c
index 201f9f7..686d33d 100644
--- a/gobject/gobject.c
+++ b/gobject/gobject.c
@@ -1189,11 +1189,13 @@ object_interface_check_properties (gpointer func_data,
 				   gpointer g_iface)
 {
   GTypeInterface *iface_class = g_iface;
-  GObjectClass *class = g_type_class_peek (iface_class->g_instance_type);
+  GObjectClass *class;
   GType iface_type = iface_class->g_type;
   GParamSpec **pspecs;
   guint n;
 
+  class = g_type_class_ref (iface_class->g_instance_type);
+
   if (!G_IS_OBJECT_CLASS (class))
     return;
 
@@ -1205,7 +1207,7 @@ object_interface_check_properties (gpointer func_data,
 							  pspecs[n]->name,
 							  G_OBJECT_CLASS_TYPE (class),
 							  TRUE);
-      
+
       if (!class_pspec)
 	{
 	  g_critical ("Object class %s doesn't implement property "
@@ -1237,9 +1239,9 @@ object_interface_check_properties (gpointer func_data,
 		      g_type_name (G_PARAM_SPEC_VALUE_TYPE (pspecs[n])),
 		      g_type_name (iface_type));
 	}
-      
+
 #define SUBSET(a,b,mask) (((a) & ~(b) & (mask)) == 0)
-      
+
       /* CONSTRUCT and CONSTRUCT_ONLY add restrictions.
        * READABLE and WRITABLE remove restrictions. The implementation
        * paramspec must have less restrictive flags.
@@ -1259,10 +1261,12 @@ object_interface_check_properties (gpointer func_data,
 		      g_type_name (G_OBJECT_CLASS_TYPE (class)),
 		      g_type_name (iface_type));
 	}
-#undef SUBSET	  
+#undef SUBSET
     }
-  
+
   g_free (pspecs);
+
+  g_type_class_unref (class);
 }
 
 GType



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