harness: don't crash when adding a sink-harness without h->sinkpad
authorHavard Graff <havard.graff@gmail.com>
Thu, 24 Sep 2015 08:23:14 +0000 (10:23 +0200)
committerTim-Philipp Müller <tim@centricular.com>
Thu, 24 Sep 2015 10:07:24 +0000 (11:07 +0100)
https://bugzilla.gnome.org/show_bug.cgi?id=755511

libs/gst/check/gstharness.c
tests/check/libs/gstharness.c

index 6a8cde3..a196e48 100644 (file)
@@ -2241,7 +2241,7 @@ gst_harness_add_sink_harness (GstHarness * h, GstHarness * sink_harness)
   h->sink_harness = sink_harness;
   priv->sink_forward_pad = gst_object_ref (h->sink_harness->srcpad);
   gst_harness_use_testclock (h->sink_harness);
-  if (priv->forwarding)
+  if (priv->forwarding && h->sinkpad)
     gst_pad_sticky_events_foreach (h->sinkpad, forward_sticky_events, h);
   gst_harness_set_forwarding (h->sink_harness, priv->forwarding);
 }
index ef55afc..889f1c7 100644 (file)
@@ -107,6 +107,16 @@ GST_START_TEST(test_src_harness_no_forwarding)
 }
 GST_END_TEST;
 
+GST_START_TEST(test_add_sink_harness_without_sinkpad)
+{
+  GstHarness * h = gst_harness_new ("fakesink");
+
+  gst_harness_add_sink (h, "fakesink");
+
+  gst_harness_teardown (h);
+}
+GST_END_TEST;
+
 static Suite *
 gst_harness_suite (void)
 {
@@ -118,6 +128,7 @@ gst_harness_suite (void)
   tcase_add_test (tc_chain, test_harness_element_ref);
   tcase_add_test (tc_chain, test_src_harness);
   tcase_add_test (tc_chain, test_src_harness_no_forwarding);
+  tcase_add_test (tc_chain, test_add_sink_harness_without_sinkpad);
 
   return s;
 }