a more robust check on the outcome of regexec and a more clean design

This commit is contained in:
Mario Di Raimondo 2014-09-15 09:17:43 +02:00 committed by Jaroslav Kysela
parent 651e26f0c1
commit b7a45dfaee

View file

@ -361,7 +361,7 @@ opentv_parse_event_section
if (ev.summary) {
regmatch_t match[4];
char buf[1024];
int i;
int i,size;
/* Parse Series/Episode */
for (i = 0; i < ARRAY_SIZE(_opentv_se_num_patterns); i++) {
@ -387,9 +387,10 @@ opentv_parse_event_section
/* Parse Subtitle */
for (i = 0; i < ARRAY_SIZE(_opentv_subtitle_patterns); i++) {
if (!regexec(_opentv_subtitle_pregs+i, ev.summary, 2, match, 0) && match[1].rm_eo - match[1].rm_so <= sizeof(buf) - 1) {
memcpy(buf, ev.summary + match[1].rm_so, match[1].rm_eo - match[1].rm_so);
buf[match[1].rm_eo - match[1].rm_so] = '\0';
if (!regexec(_opentv_subtitle_pregs+i, ev.summary, 2, match, 0) && match[1].rm_so != -1) {
size = MIN(match[1].rm_eo - match[1].rm_so, sizeof(buf) - 1);
memcpy(buf, ev.summary + match[1].rm_so, size);
buf[size] = '\0';
tvhdebug("opentv", " extract from summary subtitle %s", buf);
save |= epg_episode_set_subtitle(ee, buf, lang, src);
break; /* skip other patterns */