# HG changeset patch # User eugeni # Date 1206898937 0 # Node ID 75a108423c1122ce07701d85fa3cd18ee26f52d0 # Parent 65ad20416dd76c6adcd19db5cfa51be9dc6f3be3 Skip BOM at the beginning of text in ASS parser. diff -r 65ad20416dd7 -r 75a108423c11 libass/ass.c --- a/libass/ass.c Sun Mar 30 16:55:46 2008 +0000 +++ b/libass/ass.c Sun Mar 30 17:42:17 2008 +0000 @@ -647,7 +647,7 @@ */ static int process_line(ass_track_t* track, char *str) { - if (strstr(str, "[Script Info]")) { // FIXME: strstr to skip possible BOM at the beginning of the script + if (!strncmp(str, "[Script Info]", 13)) { track->parser_priv->state = PST_INFO; } else if (!strncmp(str, "[V4 Styles]", 11)) { track->parser_priv->state = PST_STYLES; @@ -690,7 +690,11 @@ char* p = str; while(1) { char* q; - for (;((*p=='\r')||(*p=='\n'));++p) {} + while (1) { + if ((*p=='\r')||(*p=='\n')) ++p; + else if (p[0]=='\xef' && p[1]=='\xbb' && p[2]=='\xbf') p+=3; // U+FFFE (BOM) + else break; + } for (q=p; ((*q!='\0')&&(*q!='\r')&&(*q!='\n')); ++q) {}; if (q==p) break;