diff --git a/ext/dash/gstmpdparser.c b/ext/dash/gstmpdparser.c index fe9e939235..25dea0892f 100644 --- a/ext/dash/gstmpdparser.c +++ b/ext/dash/gstmpdparser.c @@ -958,9 +958,11 @@ gst_mpdparser_get_xml_node_namespace (xmlNode * a_node, const gchar * prefix) if (prefix == NULL) { /* return the default namespace */ - namespace = xmlMemStrdup ((const gchar *) a_node->ns->href); - if (namespace) { - GST_LOG (" - default namespace: %s", namespace); + if (a_node->ns) { + namespace = xmlMemStrdup ((const gchar *) a_node->ns->href); + if (namespace) { + GST_LOG (" - default namespace: %s", namespace); + } } } else { /* look for the specified prefix in the namespace list */ diff --git a/tests/check/elements/dash_mpd.c b/tests/check/elements/dash_mpd.c index a30baf4c0f..faa3e58944 100644 --- a/tests/check/elements/dash_mpd.c +++ b/tests/check/elements/dash_mpd.c @@ -412,6 +412,27 @@ GST_START_TEST (dash_mpdparser_no_end_tag) GST_END_TEST; +/* + * Test parsing an MPD with no default namespace + */ +GST_START_TEST (dash_mpdparser_no_default_namespace) +{ + const gchar *xml = + "" + ""; + + gboolean ret; + GstMpdClient *mpdclient = gst_mpd_client_new (); + + ret = gst_mpd_parse (mpdclient, xml, strlen (xml)); + + assert_equals_int (ret, TRUE); + + gst_mpd_client_free (mpdclient); +} + +GST_END_TEST; + /* * create a test suite containing all dash testcases */ @@ -444,6 +465,7 @@ dash_suite (void) tcase_add_test (tc_negativeTests, dash_mpdparser_missing_xml); tcase_add_test (tc_negativeTests, dash_mpdparser_missing_mpd); tcase_add_test (tc_negativeTests, dash_mpdparser_no_end_tag); + tcase_add_test (tc_negativeTests, dash_mpdparser_no_default_namespace); suite_add_tcase (s, tc_simpleMPD); suite_add_tcase (s, tc_negativeTests);