You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by yo...@apache.org on 2006/12/04 06:21:34 UTC
svn commit: r482082 -
/labs/noggit/src/main/java/org/apache/noggit/JSONParser.java
Author: yonik
Date: Sun Dec 3 21:21:33 2006
New Revision: 482082
URL: http://svn.apache.org/viewvc?view=rev&rev=482082
Log:
fix string escape decoding
Modified:
labs/noggit/src/main/java/org/apache/noggit/JSONParser.java
Modified: labs/noggit/src/main/java/org/apache/noggit/JSONParser.java
URL: http://svn.apache.org/viewvc/labs/noggit/src/main/java/org/apache/noggit/JSONParser.java?view=diff&rev=482082&r1=482081&r2=482082
==============================================================================
--- labs/noggit/src/main/java/org/apache/noggit/JSONParser.java (original)
+++ labs/noggit/src/main/java/org/apache/noggit/JSONParser.java Sun Dec 3 21:21:33 2006
@@ -351,9 +351,9 @@
if (hexdig>='0' && hexdig <='9') {
return hexdig-'0';
} else if (hexdig>='A' && hexdig <='F') {
- return hexdig-'A';
+ return hexdig+(10-'A');
} else if (hexdig>='a' && hexdig <='f') {
- return hexdig-'a';
+ return hexdig+(10-'a');
}
throw err("invalid hex digit");
}
@@ -361,13 +361,14 @@
// backslash has already been read when this is called
private char readEscapedChar() throws IOException {
switch (getChar()) {
+ case '"' : return '"';
case '\\' : return '\\';
case '/' : return '/';
- case '\n' : return '\n';
- case '\r' : return '\r';
- case '\t' : return '\t';
- case '\f' : return '\f';
- case '\b' : return '\b';
+ case 'n' : return '\n';
+ case 'r' : return '\r';
+ case 't' : return '\t';
+ case 'f' : return '\f';
+ case 'b' : return '\b';
case 'u' :
return (char)(
(hexval(getChar()) << 12)
@@ -412,13 +413,16 @@
}
int ch = buf[middle++];
if (ch=='"') {
- arr.write(buf,start,middle-start-1);
+ int len = middle-start-1;
+ if (len>0) arr.write(buf,start,len);
start=middle;
return;
} else if (ch=='\\') {
- arr.write(buf,start,middle-start-1);
+ int len = middle-start-1;
+ if (len>0) arr.write(buf,start,len);
start=middle;
arr.write(readEscapedChar());
+ middle=start;
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org