From cccd010efbd9fd7c3bfb3d7afb662628d0a161cf Mon Sep 17 00:00:00 2001 From: TangoCash Date: Fri, 3 Nov 2017 22:30:24 +0100 Subject: [PATCH] gstreamer playback, fix possible segfault #2 --- generic-pc/playback_gst_10.cpp | 10 +++++++++- libarmbox/playback_gst.cpp | 5 ++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/generic-pc/playback_gst_10.cpp b/generic-pc/playback_gst_10.cpp index 1d5d9fb..7247865 100644 --- a/generic-pc/playback_gst_10.cpp +++ b/generic-pc/playback_gst_10.cpp @@ -941,7 +941,15 @@ void cPlayback::FindAllPids(int *apids, unsigned int *ac3flags, unsigned int *nu { if (gst_tag_list_get_string(tags, GST_TAG_LANGUAGE_CODE, &g_lang)) { - language[i] = std::string(gst_tag_get_language_name(g_lang)).c_str(); + std::string slang; + if (gst_tag_get_language_name(g_lang) != NULL) + slang = gst_tag_get_language_name(g_lang); + else + slang = g_lang; + if (slang.empty()) + language[i] = "unk"; + else + language[i] = slang.c_str(); lt_info("%s: language:%s\n", __FUNCTION__, language[i].c_str()); g_free(g_lang); } diff --git a/libarmbox/playback_gst.cpp b/libarmbox/playback_gst.cpp index 671973c..846c8bb 100644 --- a/libarmbox/playback_gst.cpp +++ b/libarmbox/playback_gst.cpp @@ -949,7 +949,10 @@ void cPlayback::FindAllPids(int *apids, unsigned int *ac3flags, unsigned int *nu if (gst_tag_list_get_string(tags, GST_TAG_LANGUAGE_CODE, &g_lang)) { std::string slang; - slang = gst_tag_get_language_name(g_lang); + if (gst_tag_get_language_name(g_lang) != NULL) + slang = gst_tag_get_language_name(g_lang); + else + slang = g_lang; if (slang.empty()) language[i] = "unk"; else