summaryrefslogtreecommitdiffstats
path: root/libass
diff options
context:
space:
mode:
authoreugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-03-30 17:42:17 +0000
committereugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-03-30 17:42:17 +0000
commit994b2022c3ee73608d7bf0ff527c7a3b838fc49c (patch)
tree2037507b2b55d083f71b0301399d078d380c6311 /libass
parent7cc46c2e87348423b7d97cf55fdb992404e3a7e8 (diff)
downloadmpv-994b2022c3ee73608d7bf0ff527c7a3b838fc49c.tar.bz2
mpv-994b2022c3ee73608d7bf0ff527c7a3b838fc49c.tar.xz
Skip BOM at the beginning of text in ASS parser.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@26302 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libass')
-rw-r--r--libass/ass.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/libass/ass.c b/libass/ass.c
index 6271736e84..1df33e0ee2 100644
--- a/libass/ass.c
+++ b/libass/ass.c
@@ -647,7 +647,7 @@ static int process_fonts_line(ass_track_t* track, char *str)
*/
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 @@ static int process_text(ass_track_t* track, char* str)
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;