diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2008-07-31 23:30:59 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2008-07-31 23:30:59 +0000 |
commit | b3a1829bf335a174f3cf799c919d4007c0bfaacb (patch) | |
tree | 670543ceacc62f43a1fe1e164ff8c4b789ae44c6 /src | |
parent | 28be213e85e38dbdce658ebafca449e18c974dbd (diff) | |
download | libcss-b3a1829bf335a174f3cf799c919d4007c0bfaacb.tar.gz libcss-b3a1829bf335a174f3cf799c919d4007c0bfaacb.tar.bz2 |
Fix at-rule processing.
Fix malformed selector input to actually result in a terminated block.
svn path=/trunk/libcss/; revision=4848
Diffstat (limited to 'src')
-rw-r--r-- | src/parse/parse.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/parse/parse.c b/src/parse/parse.c index 10575b9..6e10ffc 100644 --- a/src/parse/parse.c +++ b/src/parse/parse.c @@ -917,9 +917,6 @@ css_error parseAtRule(css_parser *parser) switch (state->substate) { case Initial: -#if !defined(NDEBUG) && defined(DEBUG_EVENTS) - printf("Begin at-rule\n"); -#endif parserutils_vector_clear(parser->tokens); error = getToken(parser, &token); @@ -955,10 +952,6 @@ css_error parseAtRule(css_parser *parser) if (error != CSS_OK) return error; - error = pushBack(parser, token); - if (error != CSS_OK) - return error; - /* Grammar ambiguity: any0 can be followed by '{',';',')',']'. * at-rule can only be followed by '{' and ';'. */ if (token->type == CSS_TOKEN_CHAR && token->data.len == 1) { @@ -971,6 +964,10 @@ css_error parseAtRule(css_parser *parser) } } + error = pushBack(parser, token); + if (error != CSS_OK) + return error; + break; } @@ -993,6 +990,7 @@ css_error parseAtRuleEnd(css_parser *parser) switch (state->substate) { case Initial: #if !defined(NDEBUG) && defined(DEBUG_EVENTS) + printf("Begin at-rule\n"); parserutils_vector_dump(parser->tokens, __func__, tprinter); #endif if (parser->event != NULL) { |