diff options
author | eugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2008-07-09 15:05:56 +0000 |
---|---|---|
committer | eugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2008-07-09 15:05:56 +0000 |
commit | 5db84354eb81da9f6d1c17560274e23decc2767b (patch) | |
tree | e68a5d8968db89ce0ff6a6c7728ebfa35e4e0e75 /libass | |
parent | e664a1525eec26add0968280bd71ef7ebeb66e2e (diff) | |
download | libass-5db84354eb81da9f6d1c17560274e23decc2767b.tar.bz2 libass-5db84354eb81da9f6d1c17560274e23decc2767b.tar.xz |
Fix \fn without an argument consuming the next '\'.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27242 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libass')
-rw-r--r-- | libass/ass_render.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/libass/ass_render.c b/libass/ass_render.c index 1d70ea4e..d6e94a75 100644 --- a/libass/ass_render.c +++ b/libass/ass_render.c @@ -679,11 +679,11 @@ static void reset_render_context(void); * \param pwr multiplier for some tag effects (comes from \t tags) */ static char* parse_tag(char* p, double pwr) { -#define skip_all(x) if (*p == (x)) ++p; else { \ - while ((*p != (x)) && (*p != '}') && (*p != 0)) {++p;} } +#define skip_to(x) while ((*p != (x)) && (*p != '}') && (*p != 0)) { ++p;} #define skip(x) if (*p == (x)) ++p; else { return p; } - skip_all('\\'); + skip_to('\\'); + skip('\\'); if ((*p == '}') || (*p == 0)) return p; @@ -787,7 +787,7 @@ static char* parse_tag(char* p, double pwr) { } else if (mystrcmp(&p, "fn")) { char* start = p; char* family; - skip_all('\\'); + skip_to('\\'); if (p > start) { family = malloc(p - start + 1); strncpy(family, start, p - start); @@ -928,7 +928,8 @@ static char* parse_tag(char* p, double pwr) { } while (*p == '\\') p = parse_tag(p, k); // maybe k*pwr ? no, specs forbid nested \t's - skip_all(')'); // FIXME: better skip(')'), but much more tags support required + skip_to(')'); // in case there is some unknown tag or a comment + skip(')'); } else if (mystrcmp(&p, "clip")) { int x0, y0, x1, y1; int res = 1; @@ -1031,7 +1032,7 @@ static char* parse_tag(char* p, double pwr) { return p; #undef skip -#undef skip_all +#undef skip_to } /** |