From ab0fa35575cac5f40d782f9ba36a314c88db8485 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 16 Dec 2005 19:24:24 +0000 Subject: [PATCH] gst/gstregistryxml.c: Cleanups. Original commit message from CVS: * gst/gstregistryxml.c: (load_feature): Cleanups. Don't use g_object_unref on GstObjects so that we avoid leaks on unsafe glibs. --- ChangeLog | 7 +++++++ gst/gstregistryxml.c | 16 ++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) 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) {