diff --git a/libs/gst/check/gstharness.c b/libs/gst/check/gstharness.c index 38eb6e1365..bc1b7b1715 100644 --- a/libs/gst/check/gstharness.c +++ b/libs/gst/check/gstharness.c @@ -1129,7 +1129,7 @@ gst_harness_teardown (GstHarness * h) priv->propose_allocation_metas = NULL; /* if we hold the last ref, set to NULL */ - if (gst_harness_element_unref (h) == 0) { + if (h->element != NULL && gst_harness_element_unref (h) == 0) { gboolean state_change; GstState state, pending; state_change = gst_element_set_state (h->element, GST_STATE_NULL); @@ -1157,8 +1157,10 @@ gst_harness_teardown (GstHarness * h) g_ptr_array_unref (priv->stress); priv->stress = NULL; - gst_object_unref (h->element); - h->element = NULL; + if (h->element) { + gst_object_unref (h->element); + h->element = NULL; + } gst_object_replace ((GstObject **) & priv->testclock, NULL); diff --git a/tests/check/libs/gstharness.c b/tests/check/libs/gstharness.c index 01cf8418ee..7999b4bb94 100644 --- a/tests/check/libs/gstharness.c +++ b/tests/check/libs/gstharness.c @@ -25,6 +25,14 @@ #include #include +GST_START_TEST (test_harness_empty) +{ + GstHarness *h = gst_harness_new_empty (); + gst_harness_teardown (h); +} + +GST_END_TEST; + static void create_destroy_element_harness (gpointer data, gpointer user_data) { @@ -293,6 +301,7 @@ gst_harness_suite (void) suite_add_tcase (s, tc_chain); + tcase_add_test (tc_chain, test_harness_empty); 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);