# HG changeset patch # User Jaroslav Tulach # Date 1381330425 -7200 # Node ID 43f89d9f7238e56bba03cf5b924d8502de284f6f # Parent e0b7e23a1ff2becd411b8c94db7c7a07b3d82c20 Unicode has some special new line characters that need to be encoded too diff -r e0b7e23a1ff2 -r 43f89d9f7238 rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeParser.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeParser.java Wed Oct 09 16:45:28 2013 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeParser.java Wed Oct 09 16:53:45 2013 +0200 @@ -1845,6 +1845,12 @@ case '\"': sb.append('\\').append('\"'); break; + case '\u2028': + sb.append("\\u2028"); + break; + case '\u2029': + sb.append("\\u2029"); + break; default: sb.append(c); } diff -r e0b7e23a1ff2 -r 43f89d9f7238 rt/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java Wed Oct 09 16:45:28 2013 +0200 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java Wed Oct 09 16:53:45 2013 +0200 @@ -80,6 +80,10 @@ return sb.toString().toString(); } + public static String unicode() { + return "\r\n\u2028\u2029]"; + } + public static String insertBuffer() { StringBuilder sb = new StringBuilder(); sb.append("Jardo!"); diff -r e0b7e23a1ff2 -r 43f89d9f7238 rt/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Wed Oct 09 16:45:28 2013 +0200 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Wed Oct 09 16:53:45 2013 +0200 @@ -213,6 +213,16 @@ exp, false, true ); } + + @Test public void weirdUnicodeCharacters() throws Exception { + String exp = StringSample.unicode(); + + assertExec( + "Unicode is OK", + StringSample.class, "unicode__Ljava_lang_String_2", + exp + ); + } @Test public void valueOfOnJSArray() throws Exception { assertExec(