info: first handle all miniobjects, then GObjects
authorWim Taymans <wtaymans@redhat.com>
Tue, 3 Jun 2014 12:47:17 +0000 (14:47 +0200)
committerWim Taymans <wtaymans@redhat.com>
Tue, 3 Jun 2014 12:47:17 +0000 (14:47 +0200)
First handle all miniobjects before we attempt to dereference the first
field pointer and look at the GType. With the recent glib change to
speed up G_IS_OBJECT, this causes crashes on miniobjects otherwise.

gst/gstinfo.c

index 3b2c34e..70aa29a 100644 (file)
@@ -701,15 +701,6 @@ gst_debug_print_object (gpointer ptr)
     return g_strdup_printf ("<poisoned@%p>", ptr);
   }
 #endif
-  if (GST_IS_PAD (object) && GST_OBJECT_NAME (object)) {
-    return g_strdup_printf ("<%s:%s>", GST_DEBUG_PAD_NAME (object));
-  }
-  if (GST_IS_OBJECT (object) && GST_OBJECT_NAME (object)) {
-    return g_strdup_printf ("<%s>", GST_OBJECT_NAME (object));
-  }
-  if (G_IS_OBJECT (object)) {
-    return g_strdup_printf ("<%s@%p>", G_OBJECT_TYPE_NAME (object), object);
-  }
   if (GST_IS_MESSAGE (object)) {
     return gst_info_describe_message (GST_MESSAGE_CAST (object));
   }
@@ -734,6 +725,15 @@ gst_debug_print_object (gpointer ptr)
     g_free (s);
     return ret;
   }
+  if (GST_IS_PAD (object) && GST_OBJECT_NAME (object)) {
+    return g_strdup_printf ("<%s:%s>", GST_DEBUG_PAD_NAME (object));
+  }
+  if (GST_IS_OBJECT (object) && GST_OBJECT_NAME (object)) {
+    return g_strdup_printf ("<%s>", GST_OBJECT_NAME (object));
+  }
+  if (G_IS_OBJECT (object)) {
+    return g_strdup_printf ("<%s@%p>", G_OBJECT_TYPE_NAME (object), object);
+  }
 
   return g_strdup_printf ("%p", ptr);
 }