nleghostpad: Fix GstEvent leak
authorSeungha Yang <seungha.yang@navercorp.com>
Mon, 14 Jan 2019 05:10:32 +0000 (14:10 +0900)
committerThibault Saunier <tsaunier@gnome.org>
Fri, 18 Jan 2019 20:32:02 +0000 (20:32 +0000)
plugins/nle/nlecomposition.c
plugins/nle/nleghostpad.c

index 9625bb342c00d17f1407326bc242175a199252a2..fc2c18bbc20202c88aa47e9712f49ea62df2420e 100644 (file)
@@ -2723,7 +2723,8 @@ _relink_single_node (NleComposition * comp, GNode * node,
   gst_bin_add (GST_BIN (comp->priv->current_bin), GST_ELEMENT (newobj));
   gst_element_sync_state_with_parent (GST_ELEMENT_CAST (newobj));
 
-  translated_seek = nle_object_translate_incoming_seek (newobj, toplevel_seek);
+  translated_seek = nle_object_translate_incoming_seek (newobj,
+      gst_event_ref (toplevel_seek));
 
   gst_element_send_event (GST_ELEMENT (newobj), translated_seek);
 
index 342f70cf2528f189391ddc5115cdf37a52a8d24b..cda0b0d5b47cccb572ba94269d7e36b2b2b46907 100644 (file)
@@ -39,6 +39,13 @@ struct _NlePadPrivate
   GstEvent *pending_seek;
 };
 
+/**
+ * nle_object_translate_incoming_seek:
+ * @object: A #NleObject.
+ * @event: (transfer full) A #GstEvent to translate
+ *
+ * Returns: (transfer full) new translated seek event
+ */
 GstEvent *
 nle_object_translate_incoming_seek (NleObject * object, GstEvent * event)
 {
@@ -119,6 +126,7 @@ nle_object_translate_incoming_seek (NleObject * object, GstEvent * event)
   event2 = gst_event_new_seek (rate, GST_FORMAT_TIME, flags,
       ncurtype, (gint64) ncur, GST_SEEK_TYPE_SET, (gint64) nstop);
   GST_EVENT_SEQNUM (event2) = seqnum;
+  gst_event_unref (event);
 
   return event2;
 
@@ -486,6 +494,7 @@ ghostpad_event_function (GstPad * ghostpad, GstObject * parent,
           if (!(target = gst_ghost_pad_get_target (GST_GHOST_PAD (ghostpad)))) {
             g_assert ("Seeked a pad with not target SHOULD NOT HAPPEND");
             ret = FALSE;
+            gst_event_unref (event);
             event = NULL;
           } else {
             gst_object_unref (target);