From: <tho...@fr...> - 2005-07-08 16:08:31
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thomasvs Date: Fri Jul 08 2005 09:08:29 PDT Log message: plug another memleak in registry loading - I have NO idea why this was returning a GstPlugin Modified files: . : ChangeLog gst/registries : gstlibxmlregistry.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.1239&r2=1.1240 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/registries/gstlibxmlregistry.c.diff?r1=1.6&r2=1.7 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.1239 retrieving revision 1.1240 diff -u -d -r1.1239 -r1.1240 --- ChangeLog 8 Jul 2005 14:35:56 -0000 1.1239 +++ ChangeLog 8 Jul 2005 16:08:16 -0000 1.1240 @@ -1,5 +1,11 @@ 2005-07-08 Thomas Vander Stichele <thomas at apestaart dot org> + * gst/registries/gstlibxmlregistry.c: (read_string), (load_paths), + (gst_xml_registry_load): + plug another memleak + +2005-07-08 Thomas Vander Stichele <thomas at apestaart dot org> * configure.ac: use GST_SET_ERROR_CFLAGS * docs/faq/cvs.xml: Index: gstlibxmlregistry.c RCS file: /cvs/gstreamer/gstreamer/gst/registries/gstlibxmlregistry.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- gstlibxmlregistry.c 8 Jul 2005 14:50:44 -0000 1.6 +++ gstlibxmlregistry.c 8 Jul 2005 16:08:16 -0000 1.7 @@ -573,6 +573,11 @@ *array = new; } +/* read a string and store the result in *write_to. + * return whether or not *write_to was set to a newly allocated string + * FIXME: return values aren't actually checked, and in those failure cases + * (that currently aren't triggered) cleanup is not done correctly + */ static gboolean read_string (xmlTextReaderPtr reader, gchar ** write_to) { @@ -585,12 +590,14 @@ if (xmlTextReaderDepth (reader) == depth) return found; if (xmlTextReaderNodeType (reader) == XML_READER_TYPE_TEXT) { - if (found) + if (found) { return FALSE; + } *write_to = g_strdup ((gchar *) xmlTextReaderConstValue (reader)); found = TRUE; } } return FALSE; @@ -850,15 +857,14 @@ return NULL; -static GstPlugin * +static void load_paths (xmlTextReaderPtr reader, GstXMLRegistry * registry) int ret; - GstPlugin *plugin = g_new0 (GstPlugin, 1); while ((ret = xmlTextReaderRead (reader)) == 1) { if (xmlTextReaderDepth (reader) == 1) { - return plugin; + return; if (xmlTextReaderNodeType (reader) == XML_READER_TYPE_ELEMENT && xmlTextReaderDepth (reader) == 2) { @@ -876,8 +882,7 @@ - g_free (plugin); - return NULL; + return; @@ -925,7 +930,8 @@ GstPlugin *plugin = load_plugin (reader); if (plugin) { - GST_DEBUG ("adding plugin %s with %d features", plugin->desc.name, + GST_CAT_DEBUG (GST_CAT_PLUGIN_LOADING, + "adding plugin %s with %d features", plugin->desc.name, plugin->numfeatures); gst_registry_add_plugin (GST_REGISTRY (xmlregistry), plugin); } |