resindvd: Take a copy of the passed plugin features
authorJan Schmidt <thaytan@noraisin.net>
Mon, 2 Nov 2009 11:33:19 +0000 (11:33 +0000)
committerJan Schmidt <thaytan@noraisin.net>
Mon, 2 Nov 2009 11:33:19 +0000 (11:33 +0000)
Clarify the ownership of the internal plugin feature list by making
a copy of any passed list. Avoids crashes when freeing a passed list,
or leaks caused by not freeing any internally built list.

gst/autoconvert/gstautoconvert.c

index bdd50359b40b35bbe27b039f36951f2181b91452..96020277719618bce06914dbc5533d44b4a1976f 100644 (file)
@@ -289,9 +289,10 @@ gst_auto_convert_set_property (GObject * object,
       break;
     case PROP_FACTORIES:
       GST_AUTOCONVERT_LOCK (autoconvert);
-      if (autoconvert->factories == NULL)
-        autoconvert->factories = g_value_get_pointer (value);
-      else
+      if (autoconvert->factories == NULL) {
+        GList *factories = g_value_get_pointer (value);
+        autoconvert->factories = gst_plugin_feature_list_copy (factories);
+      } else
         GST_WARNING_OBJECT (object, "Can not reset factories after they"
             " have been set or auto-discovered");
       GST_AUTOCONVERT_UNLOCK (autoconvert);