Mercurial > mplayer.hg
changeset 11838:b4f1df0c1e3a
prevent subreader from segfaulting when sami subs dont have
a <P> at the beginning.
patch by Fabien Tassin <fta+mplayer@sofaraway.org>
author | attila |
---|---|
date | Sat, 24 Jan 2004 12:54:05 +0000 |
parents | 4e8f8efb6906 |
children | cbde5342c574 |
files | subreader.c |
diffstat | 1 files changed, 14 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/subreader.c Sat Jan 24 11:53:52 2004 +0000 +++ b/subreader.c Sat Jan 24 12:54:05 2004 +0000 @@ -113,13 +113,24 @@ 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; }