You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by gb...@apache.org on 2010/04/29 17:29:04 UTC

svn commit: r939345 - /pivot/trunk/core/src/org/apache/pivot/json/JSONSerializer.java

Author: gbrown
Date: Thu Apr 29 15:29:04 2010
New Revision: 939345

URL: http://svn.apache.org/viewvc?rev=939345&view=rev
Log:
Ignore ISO control characters in Strings in JSONSerializer.

Modified:
    pivot/trunk/core/src/org/apache/pivot/json/JSONSerializer.java

Modified: pivot/trunk/core/src/org/apache/pivot/json/JSONSerializer.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/json/JSONSerializer.java?rev=939345&r1=939344&r2=939345&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/json/JSONSerializer.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/json/JSONSerializer.java Thu Apr 29 15:29:04 2010
@@ -310,40 +310,43 @@ public class JSONSerializer implements S
         c = reader.read();
 
         while (c != -1 && c != t) {
-            if (c == '\\') {
-                c = reader.read();
+            if (!Character.isISOControl(c)) {
+                if (c == '\\') {
+                    c = reader.read();
 
-                if (c == 'b') {
-                    c = '\b';
-                } else if (c == 'f') {
-                    c = '\f';
-                } else if (c == 'n') {
-                    c = '\n';
-                } else if (c == 'r') {
-                    c = '\r';
-                } else if (c == 't') {
-                    c = '\t';
-                } else if (c == 'u') {
-                    StringBuilder unicodeBuilder = new StringBuilder();
-                    while (unicodeBuilder.length() < 4) {
-                        c = reader.read();
-                        unicodeBuilder.append((char)c);
-                    }
+                    if (c == 'b') {
+                        c = '\b';
+                    } else if (c == 'f') {
+                        c = '\f';
+                    } else if (c == 'n') {
+                        c = '\n';
+                    } else if (c == 'r') {
+                        c = '\r';
+                    } else if (c == 't') {
+                        c = '\t';
+                    } else if (c == 'u') {
+                        StringBuilder unicodeBuilder = new StringBuilder();
+                        while (unicodeBuilder.length() < 4) {
+                            c = reader.read();
+                            unicodeBuilder.append((char)c);
+                        }
 
-                    String unicode = unicodeBuilder.toString();
-                    c = (char)Integer.parseInt(unicode, 16);
-                } else {
-                    if (!(c == '\\'
-                        || c == '/'
-                        || c == '\"'
-                        || c == '\''
-                        || c == t)) {
-                        throw new SerializationException("Unsupported escape sequence in input stream.");
+                        String unicode = unicodeBuilder.toString();
+                        c = (char)Integer.parseInt(unicode, 16);
+                    } else {
+                        if (!(c == '\\'
+                            || c == '/'
+                            || c == '\"'
+                            || c == '\''
+                            || c == t)) {
+                            throw new SerializationException("Unsupported escape sequence in input stream.");
+                        }
                     }
                 }
+
+                stringBuilder.append((char)c);
             }
 
-            stringBuilder.append((char)c);
             c = reader.read();
         }