diff options
-rw-r--r-- | src/parse/parse.c | 16 | ||||
-rw-r--r-- | test/data/parse2/INDEX | 1 | ||||
-rw-r--r-- | test/data/parse2/eof.dat | 304 |
3 files changed, 319 insertions, 2 deletions
diff --git a/src/parse/parse.c b/src/parse/parse.c index ac62f64..825f019 100644 --- a/src/parse/parse.c +++ b/src/parse/parse.c @@ -759,8 +759,9 @@ css_error parseStylesheet(css_parser *parser) css_error error; /* stylesheet -> CDO ws stylesheet - * CDC ws stylesheet - * statement ws stylesheet + * -> CDC ws stylesheet + * -> statement ws stylesheet + * -> */ while (1) { @@ -970,6 +971,9 @@ css_error parseRulesetEnd(css_parser *parser) if (error != CSS_OK) return error; + if (token->type == CSS_TOKEN_EOF) + break; + if (token->type != CSS_TOKEN_CHAR || token->ilower->len != 1 || token->ilower->data[0] != '}') { /* This should never happen, as FOLLOW(decl-list) @@ -1445,6 +1449,9 @@ css_error parseDeclList(css_parser *parser) if (error != CSS_OK) return error; + if (token->type == CSS_TOKEN_EOF) + return done(parser); + if (token->type != CSS_TOKEN_CHAR || token->ilower->len != 1) { /* Should never happen */ assert(0 && "Expected ; or }"); @@ -1596,6 +1603,8 @@ css_error parseValue1(css_parser *parser) return transition(parser, to, subsequent); } case AfterValue: + if (parser->parseError) + return done(parser); break; } @@ -1641,6 +1650,9 @@ css_error parseValue0(css_parser *parser) return transition(parser, to, subsequent); } case AfterValue: + if (parser->parseError) + return done(parser); + state->substate = Initial; break; diff --git a/test/data/parse2/INDEX b/test/data/parse2/INDEX index 49d6e21..9b2c5a5 100644 --- a/test/data/parse2/INDEX +++ b/test/data/parse2/INDEX @@ -3,6 +3,7 @@ # Test Description tests1.dat Basic tests +eof.dat Unexpected EOF tests comments.dat Comment tests illegal-values.dat Illegal value tests malformed-declarations.dat Malformed declaration tests diff --git a/test/data/parse2/eof.dat b/test/data/parse2/eof.dat new file mode 100644 index 0000000..e2c8e6b --- /dev/null +++ b/test/data/parse2/eof.dat @@ -0,0 +1,304 @@ +#data + +#errors +#expected +#reset + +#data +<!-- +#errors +#expected +#reset + +#data +--> +#errors +#expected +#reset + +#data +f +#errors +#expected +#reset + +#data +f +#errors +#expected +#reset + +#data +f{ +#errors +#expected +| f +#reset + +#data +f{ +#errors +#expected +| f +#reset + +#data +f{; +#errors +#expected +| f +#reset + +#data +f{ ; +#errors +#expected +| f +#reset + +#data +f{; +#errors +#expected +| f +#reset + +#data +f{g +#errors +#expected +| f +#reset + +#data +f{g +#errors +#expected +| f +#reset + +#data +f{g: +#errors +#expected +| f +#reset + +#data +f{g : +#errors +#expected +| f +#reset + +#data +f{g: +#errors +#expected +| f +#reset + +#data +f{g:h +#errors +#expected +| f +#reset + +#data +f{clear:both; +#errors +#expected +| f +| clear: both +#reset + +#data +f{clear:both} +#errors +#expected +| f +| clear: both +#reset + +#data +@f +#errors +#expected +#reset + +#data +@f +#errors +#expected +#reset + +#data +@f{ +#errors +#expected +#reset + +#data +@f{ +#errors +#expected +#reset + +#data +@f{{ +#errors +#expected +#reset + +#data +@f{@g +#errors +#expected +#reset + +#data +@f{; +#errors +#expected +#reset + +#data +@f{} +#errors +#expected +#reset + +#data +@f; +#errors +#expected +#reset + +#data +l( +#errors +#expected +#reset + +#data +l ( +#errors +#expected +#reset + +#data +l( +#errors +#expected +#reset + +#data +l(m +#errors +#expected +#reset + +#data +l(m +#errors +#expected +#reset + +#data +l(m) +#errors +#expected +#reset + +#data +l(m) +#errors +#expected +#reset + +#data +( +#errors +#expected +#reset + +#data +( +#errors +#expected +#reset + +#data +( +#errors +#expected +#reset + +#data +(m +#errors +#expected +#reset + +#data +( m +#errors +#expected +#reset + +#data +(m +#errors +#expected +#reset + +#data +(m) +#errors +#expected +#reset + +#data +[ +#errors +#expected +#reset + +#data +[ +#errors +#expected +#reset + +#data +[ +#errors +#expected +#reset + +#data +[m +#errors +#expected +#reset + +#data +[ m +#errors +#expected +#reset + +#data +[m +#errors +#expected +#reset + +#data +[m] +#errors +#expected +#reset + + |