mirror of
https://github.com/mpv-player/mpv
synced 2025-03-22 19:34:14 +00:00
prevent subreader from segfaulting when sami subs dont have
a <P> at the beginning. patch by Fabien Tassin <fta+mplayer@sofaraway.org> git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@11839 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
a4ac1dc9a4
commit
ab424093b4
17
subreader.c
17
subreader.c
@ -113,13 +113,24 @@ subtitle *sub_read_line_sami(FILE *fd, subtitle *current) {
|
||||
s = stristr (s, "Start=");
|
||||
if (s) {
|
||||
current->start = strtol (s + 6, &s, 0) / 10;
|
||||
/* eat '>' */
|
||||
for (; *s != '>' && *s != '\0'; s++);
|
||||
s++;
|
||||
state = 1; continue;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1: /* find "<P" */
|
||||
if ((s = stristr (s, "<P"))) { s += 2; state = 2; continue; }
|
||||
break;
|
||||
case 1: /* find (optionnal) "<P", skip other TAGs */
|
||||
for (; *s == ' ' || *s == '\t'; s++); /* strip blanks, if any */
|
||||
if (*s == '\0') break;
|
||||
if (*s != '<') { state = 3; p = text; continue; } /* not a TAG */
|
||||
s++;
|
||||
if (*s == 'P' || *s == 'p') { s++; state = 2; continue; } /* found '<P' */
|
||||
for (; *s != '>' && *s != '\0'; s++); /* skip remains of non-<P> TAG */
|
||||
if (s == '\0')
|
||||
break;
|
||||
s++;
|
||||
continue;
|
||||
|
||||
case 2: /* find ">" */
|
||||
if ((s = strchr (s, '>'))) { s++; state = 3; p = text; continue; }
|
||||
|
Loading…
Reference in New Issue
Block a user