diff options
author | bptato <nincsnevem662@gmail.com> | 2024-10-25 18:23:44 +0200 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2024-10-25 18:27:00 +0200 |
commit | 28bf2922a33dd987a0a3095bc461589ef23ad37d (patch) | |
tree | 78a1e29d853d89205fba67fe99ec3177b9a1e104 /src/css/cssparser.nim | |
parent | 8b46e95183c3605432589efcc67844ff2d1dda45 (diff) | |
download | chawan-28bf2922a33dd987a0a3095bc461589ef23ad37d.tar.gz |
cssparser: do not accept invalid rules
This isn't exactly clear from the standard's wording, but e.g. *display: inline must be discarded (because it incorrectly starts with a delim token).
Diffstat (limited to 'src/css/cssparser.nim')
-rw-r--r-- | src/css/cssparser.nim | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/css/cssparser.nim b/src/css/cssparser.nim index 8ed54bf2..ec14960e 100644 --- a/src/css/cssparser.nim +++ b/src/css/cssparser.nim @@ -647,6 +647,7 @@ proc consumeDeclarations(state: var CSSParseState): seq[CSSParsedItem] = discard state.consumeComponentValue() proc consumeDeclarations2(state: var CSSParseState): seq[CSSDeclaration] = + result = @[] while state.has(): let t = state.consume() if t == cttWhitespace or t == cttSemicolon: @@ -655,7 +656,7 @@ proc consumeDeclarations2(state: var CSSParseState): seq[CSSDeclaration] = state.reconsume() discard state.consumeAtRule() elif t == cttIdent: - var tempList: seq[CSSParsedItem] + var tempList: seq[CSSParsedItem] = @[] let tok = CSSToken(t) tempList.add(tok) while state.has() and state.peek() != cttSemicolon: @@ -666,7 +667,7 @@ proc consumeDeclarations2(state: var CSSParseState): seq[CSSDeclaration] = result.add(decl.get) else: state.reconsume() - if state.peek() != cttSemicolon: + while state.has() and state.peek() != cttSemicolon: discard state.consumeComponentValue() proc consumeListOfRules(state: var CSSParseState; topLevel = false): |