plugin: plugin_load() must return a ref even if it was loaded already
authorTim-Philipp Müller <tim@centricular.com>
Thu, 11 Jan 2018 17:10:45 +0000 (17:10 +0000)
committerTim-Philipp Müller <tim@centricular.com>
Thu, 11 Jan 2018 17:10:45 +0000 (17:10 +0000)
Fix refcounting issue when plugin was loaded already.
gst_plugin_load() is supposed to return a ref, so it
must always return a ref.

This also fixes the gstplugin unit test on windows where
fork is not available and where test_load_coreelements()
would unref a plugin ref it didn't get and then mess up
the internal registry plugin list state for the next test,
in case where the test registry does not exist yet.

gst/gstplugin.c

index e89f33c..86d8abc 100644 (file)
@@ -1361,7 +1361,7 @@ gst_plugin_load (GstPlugin * plugin)
   GstPlugin *newplugin;
 
   if (gst_plugin_is_loaded (plugin)) {
-    return plugin;
+    return gst_object_ref (plugin);
   }
 
   if (!(newplugin = gst_plugin_load_file (plugin->filename, &error)))