]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fixed logic error causing IOException if stream supports mark (#10851)
authorArtur Signell <artur@vaadin.com>
Mon, 18 Feb 2013 20:15:39 +0000 (22:15 +0200)
committerVaadin Code Review <review@vaadin.com>
Tue, 19 Feb 2013 08:21:27 +0000 (08:21 +0000)
The current logic caused mark() never to be called if the original InputStream supports mark (isMarkSupported()). This in turn causes an IOException when reset is called and no mark has been set.

Change-Id: I781ed8e9d355d22bd8e43acb5c5e9c8da90f66a0

theme-compiler/src/com/vaadin/sass/internal/parser/Parser.java
theme-compiler/src/com/vaadin/sass/internal/parser/Parser.jj

index 928c8899560b7a96302e86efb51396879adda1d9..3863a303798bb25e371505484d3a7d4f648d5904 100644 (file)
@@ -152,6 +152,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
 
     /**
      * This method parses only one rule (style rule or at-rule, except
+     * 
      * @charset).
      * 
      * @param source
@@ -314,10 +315,12 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
         String encoding = source.getEncoding();
         InputStream input = source.getByteStream();
         if (!input.markSupported()) {
+            // If mark is not supported, wrap it in a stream which supports mark
             input = new BufferedInputStream(input);
             source.setByteStream(input);
-            input.mark(100);
         }
+        // Mark either the original stream or the wrapped stream
+        input.mark(100);
         if (encoding == null) {
             encoding = "ASCII";
 
@@ -6436,6 +6439,13 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
         return false;
     }
 
+    private boolean jj_3R_252() {
+        if (jj_scan_token(HASH)) {
+            return true;
+        }
+        return false;
+    }
+
     private boolean jj_3R_184() {
         if (jj_scan_token(SEMICOLON)) {
             return true;
@@ -6451,13 +6461,6 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
         return false;
     }
 
-    private boolean jj_3R_252() {
-        if (jj_scan_token(HASH)) {
-            return true;
-        }
-        return false;
-    }
-
     private boolean jj_3R_239() {
         Token xsp;
         xsp = jj_scanpos;
index a0bd883101eadf2f9939069830744aa95ef5dcd7..1f9221de88073a48de423a2e84f055e5ebc44755 100644 (file)
@@ -319,10 +319,12 @@ public class Parser implements org.w3c.css.sac.Parser {
        String encoding = source.getEncoding();
        InputStream input = source.getByteStream();
        if (!input.markSupported()) {
+            // If mark is not supported, wrap it in a stream which supports mark
             input = new BufferedInputStream(input);
             source.setByteStream(input);
-            input.mark(100);
         }
+        // Mark either the original stream or the wrapped stream
+        input.mark(100);
        if(encoding == null){
            encoding = "ASCII";