aboutsummaryrefslogtreecommitdiff
path: root/src/cssparser.cc
diff options
context:
space:
mode:
authorJohannes Hofmann <Johannes.Hofmann@gmx.de>2009-11-15 12:17:52 +0100
committerJohannes Hofmann <Johannes.Hofmann@gmx.de>2009-11-15 12:17:52 +0100
commitc1faf29565bf21537e06dc02a6c7370b8f67a567 (patch)
tree24230d28dee1ced906463d40130b01235752cadf /src/cssparser.cc
parent4fa42f715128885c26b8c441da5cdcd426cc062b (diff)
properly parse comma separated list of font-family names in CSS parser
Diffstat (limited to 'src/cssparser.cc')
-rw-r--r--src/cssparser.cc17
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: