diff options
author | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2009-11-15 12:17:52 +0100 |
---|---|---|
committer | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2009-11-15 12:17:52 +0100 |
commit | c1faf29565bf21537e06dc02a6c7370b8f67a567 (patch) | |
tree | 24230d28dee1ced906463d40130b01235752cadf /src | |
parent | 4fa42f715128885c26b8c441da5cdcd426cc062b (diff) |
properly parse comma separated list of font-family names in CSS parser
Diffstat (limited to 'src')
-rw-r--r-- | src/cssparser.cc | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/cssparser.cc b/src/cssparser.cc index 932326d4..1b575aec 100644 --- a/src/cssparser.cc +++ b/src/cssparser.cc @@ -770,6 +770,7 @@ bool CssParser::parseValue(CssPropertyName prop, bool found, ret = false; float fval; int i, ival, err = 1; + Dstr *dstr; switch (type) { case CSS_TYPE_ENUM: @@ -894,11 +895,23 @@ bool CssParser::parseValue(CssPropertyName prop, break; case CSS_TYPE_SYMBOL: - if (ttype == CSS_TK_SYMBOL || ttype == CSS_TK_STRING) { - val->strVal = dStrdup(tval); + /* Read comma separated list of font family names */ + dstr = dStr_new(""); + while (ttype == CSS_TK_SYMBOL || ttype == CSS_TK_STRING || + (ttype == CSS_TK_CHAR && tval[0] == ',')) { + if (spaceSeparated) + dStr_append_c(dstr, ' '); + dStr_append(dstr, tval); ret = true; nextToken(); } + + if (ret) { + val->strVal = dStrstrip(dstr->str); + dStr_free(dstr, 0); + } else { + dStr_free(dstr, 1); + } break; case CSS_TYPE_FONT_WEIGHT: |