Fix parsing strings with literal DOS newlines
authorMihai Bazon <mihai.bazon@gmail.com>
Thu, 23 Apr 2015 09:08:19 +0000 (12:08 +0300)
committerMihai Bazon <mihai.bazon@gmail.com>
Thu, 23 Apr 2015 09:08:19 +0000 (12:08 +0300)
(should not set newline_before)

Fix #693

lib/parse.js

index 95a9f77..53aaabd 100644 (file)
@@ -354,8 +354,13 @@ function tokenizer($TEXT, filename, html5_comments) {
           case 120 : return String.fromCharCode(hex_bytes(2)); // \x
           case 117 : return String.fromCharCode(hex_bytes(4)); // \u
           case 10  : return ""; // newline
-          default  : return ch;
+          case 13  :            // \r
+            if (peek() == "\n") { // DOS newline
+                next(true, in_string);
+                return "";
+            }
         }
+        return ch;
     };
 
     function hex_bytes(n) {
@@ -372,7 +377,7 @@ function tokenizer($TEXT, filename, html5_comments) {
     var read_string = with_eof_error("Unterminated string constant", function(quote_char){
         var quote = next(), ret = "";
         for (;;) {
-            var ch = next(true);
+            var ch = next(true, true);
             if (ch == "\\") {
                 // read OctalEscapeSequence (XXX: deprecated if "strict mode")
                 // https://github.com/mishoo/UglifyJS/issues/178