diff --git a/ChangeLog b/ChangeLog index d7d8302c85..8b0ce1d6d1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-12-16 Wim Taymans + + * gst/gstregistryxml.c: (load_feature): + Cleanups. + Don't use g_object_unref on GstObjects so that we avoid + leaks on unsafe glibs. + 2005-12-16 Wim Taymans * gst/gstbin.c: (gst_bin_recalc_state): diff --git a/gst/gstregistryxml.c b/gst/gstregistryxml.c index 3d82423fec..43d5ecf52a 100644 --- a/gst/gstregistryxml.c +++ b/gst/gstregistryxml.c @@ -218,16 +218,20 @@ static GstPluginFeature * load_feature (xmlTextReaderPtr reader) { int ret; - int depth = xmlTextReaderDepth (reader); - gchar *feature_name = - (gchar *) xmlTextReaderGetAttribute (reader, BAD_CAST "typename"); + int depth; + gchar *feature_name; GstPluginFeature *feature; GType type; + depth = xmlTextReaderDepth (reader); + feature_name = + (gchar *) xmlTextReaderGetAttribute (reader, BAD_CAST "typename"); + GST_DEBUG ("loading feature"); if (!feature_name) return NULL; + type = g_type_from_name (feature_name); g_free (feature_name); feature_name = NULL; @@ -240,7 +244,11 @@ load_feature (xmlTextReaderPtr reader) return NULL; } if (!GST_IS_PLUGIN_FEATURE (feature)) { - g_object_unref (feature); + /* don't really know what it is */ + if (GST_IS_OBJECT (feature)) + gst_object_unref (feature); + else + g_object_unref (feature); return NULL; } while ((ret = xmlTextReaderRead (reader)) == 1) {