Fix segfault when adding clips to group outside a timeline
authorThibault Saunier <tsaunier@igalia.com>
Wed, 23 Jan 2019 12:07:58 +0000 (09:07 -0300)
committerThibault Saunier <tsaunier@gnome.org>
Wed, 30 Jan 2019 20:04:04 +0000 (20:04 +0000)
Making sure that objects are inside a timeline before adding/removing them from it

Fixes https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/35

ges/ges-group.c

index a0fb24e..19fc304 100644 (file)
@@ -455,7 +455,8 @@ _child_added (GESContainer * group, GESTimelineElement * child)
   GESGroupPrivate *priv = GES_GROUP (group)->priv;
   GstClockTime last_child_end = 0, first_child_start = G_MAXUINT64;
 
-  if (!GES_TIMELINE_ELEMENT_TIMELINE (group)) {
+  if (!GES_TIMELINE_ELEMENT_TIMELINE (group)
+      && GES_TIMELINE_ELEMENT_TIMELINE (child)) {
     timeline_add_group (GES_TIMELINE_ELEMENT_TIMELINE (child),
         GES_GROUP (group));
     timeline_emit_group_added (GES_TIMELINE_ELEMENT_TIMELINE (child),
@@ -554,8 +555,9 @@ _child_removed (GESContainer * group, GESTimelineElement * child)
   g_free (signals_ids_key);
   if (children == NULL) {
     GST_FIXME_OBJECT (group, "Auto destroy myself?");
-    timeline_remove_group (GES_TIMELINE_ELEMENT_TIMELINE (group),
-        GES_GROUP (group));
+    if (GES_TIMELINE_ELEMENT_TIMELINE (group))
+      timeline_remove_group (GES_TIMELINE_ELEMENT_TIMELINE (group),
+          GES_GROUP (group));
     return;
   }