From: Jaroslav Kysela Date: Wed, 12 Sep 2018 19:45:36 +0000 (+0200) Subject: xmltv: fix the desc import, fixes #5206 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3458483827a6e0dac23b595ab2730c2a0b604af4;p=thirdparty%2Ftvheadend.git xmltv: fix the desc import, fixes #5206 --- diff --git a/src/epggrab/module/xmltv.c b/src/epggrab/module/xmltv.c index a5c66b11f..03ddbdb36 100644 --- a/src/epggrab/module/xmltv.c +++ b/src/epggrab/module/xmltv.c @@ -605,6 +605,7 @@ xmltv_appendit(lang_str_t **_desc, string_list_t *list, { lang_str_t *desc, *lstr; lang_str_ele_t *e; + const char *s; if (!list) return; char *str = string_list_2_csv(list, ',', 1); if (!str) return; @@ -613,7 +614,11 @@ xmltv_appendit(lang_str_t **_desc, string_list_t *list, if (lstr) { RB_FOREACH(e, lstr, link) { if (!desc) desc = lang_str_create(); - lang_str_append(desc, "\n\n", e->lang); + s = *_desc ? lang_str_get_only(*_desc, e->lang) : NULL; + if (s) { + lang_str_append(desc, s, e->lang); + lang_str_append(desc, "\n\n", e->lang); + } lang_str_append(desc, tvh_gettext_lang(e->lang, name), e->lang); lang_str_append(desc, str, e->lang); } diff --git a/src/lang_str.c b/src/lang_str.c index bbf3b5b01..80fc6d6e8 100644 --- a/src/lang_str.c +++ b/src/lang_str.c @@ -84,8 +84,8 @@ lang_str_t *lang_str_copy ( const lang_str_t *ls ) return ret; } -/* Get language element */ -lang_str_ele_t *lang_str_get2 +/* Get language element, don't return first */ +lang_str_ele_t *lang_str_get2_only ( const lang_str_t *ls, const char *lang ) { int i; @@ -103,8 +103,18 @@ lang_str_ele_t *lang_str_get2 } } + /* Return */ + return e; +} + +/* Get language element */ +lang_str_ele_t *lang_str_get2 + ( const lang_str_t *ls, const char *lang ) +{ + lang_str_ele_t *e = lang_str_get2_only(ls, lang); + /* Use first available */ - if (!e) e = RB_FIRST(ls); + if (!e && ls) e = RB_FIRST(ls); /* Return */ return e; diff --git a/src/lang_str.h b/src/lang_str.h index e140b536c..015216e7a 100644 --- a/src/lang_str.h +++ b/src/lang_str.h @@ -38,6 +38,12 @@ lang_str_t *lang_str_create2 ( const char *str, const char *lang ); lang_str_t *lang_str_copy ( const lang_str_t *ls ); /* Get elements */ +lang_str_ele_t *lang_str_get2_only ( const lang_str_t *ls, const char *lang ); +static inline const char *lang_str_get_only(const lang_str_t *ls, const char *lang) + { + lang_str_ele_t *e = lang_str_get2_only(ls, lang); + return e ? e->str : NULL; + } lang_str_ele_t *lang_str_get2 ( const lang_str_t *ls, const char *lang ); static inline const char *lang_str_get(const lang_str_t *ls, const char *lang) {