Author: jmb
Date: Wed Jan 21 18:18:32 2009
New Revision: 6164

URL: http://source.netsurf-browser.org?rev=6164&view=rev
Log:
Test data for EOF in strange places.
Fix EOF handling in the core parser.

Added:
    trunk/libcss/test/data/parse2/eof.dat
Modified:
    trunk/libcss/src/parse/parse.c
    trunk/libcss/test/data/parse2/INDEX

Modified: trunk/libcss/src/parse/parse.c
URL: 
http://source.netsurf-browser.org/trunk/libcss/src/parse/parse.c?rev=6164&r1=6163&r2=6164&view=diff
==============================================================================
--- trunk/libcss/src/parse/parse.c (original)
+++ trunk/libcss/src/parse/parse.c Wed Jan 21 18:18:32 2009
@@ -759,8 +759,9 @@
        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 @@
                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 @@
                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 @@
                return transition(parser, to, subsequent);
        }
        case AfterValue:
+               if (parser->parseError)
+                       return done(parser);
                break;
        }
 
@@ -1641,6 +1650,9 @@
                        return transition(parser, to, subsequent);
                }
                case AfterValue:
+                       if (parser->parseError)
+                               return done(parser);
+
                        state->substate = Initial;
 
                        break;

Modified: trunk/libcss/test/data/parse2/INDEX
URL: 
http://source.netsurf-browser.org/trunk/libcss/test/data/parse2/INDEX?rev=6164&r1=6163&r2=6164&view=diff
==============================================================================
--- trunk/libcss/test/data/parse2/INDEX (original)
+++ trunk/libcss/test/data/parse2/INDEX Wed Jan 21 18:18:32 2009
@@ -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

Added: trunk/libcss/test/data/parse2/eof.dat
URL: 
http://source.netsurf-browser.org/trunk/libcss/test/data/parse2/eof.dat?rev=6164&view=auto
==============================================================================
--- trunk/libcss/test/data/parse2/eof.dat (added)
+++ trunk/libcss/test/data/parse2/eof.dat Wed Jan 21 18:18:32 2009
@@ -1,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
+
+


_______________________________________________
netsurf-commits mailing list
[email protected]
http://vlists.pepperfish.net/cgi-bin/mailman/listinfo/netsurf-commits-netsurf-browser.org

Reply via email to