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; }