From b3a1829bf335a174f3cf799c919d4007c0bfaacb Mon Sep 17 00:00:00 2001 From: John Mark Bell Date: Thu, 31 Jul 2008 23:30:59 +0000 Subject: Fix at-rule processing. Fix malformed selector input to actually result in a terminated block. svn path=/trunk/libcss/; revision=4848 --- src/parse/parse.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'src/parse/parse.c') 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) { -- cgit v1.2.3