Author: thiru
Date: Fri May 11 18:07:25 2012
New Revision: 1337322

URL: http://svn.apache.org/viewvc?rev=1337322&view=rev
Log:
AVRO-1066. ArrayIndexOutOfBoundsException in ParsingEncoder when trying to use 
a json encoder to serialize a deep object graph

Modified:
    avro/trunk/CHANGES.txt
    
avro/trunk/lang/java/avro/src/main/java/org/apache/avro/io/ParsingEncoder.java
    
avro/trunk/lang/java/avro/src/test/java/org/apache/avro/io/TestValidatingIO.java

Modified: avro/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/avro/trunk/CHANGES.txt?rev=1337322&r1=1337321&r2=1337322&view=diff
==============================================================================
--- avro/trunk/CHANGES.txt (original)
+++ avro/trunk/CHANGES.txt Fri May 11 18:07:25 2012
@@ -42,6 +42,8 @@ Avro 1.7.0 (unreleased)
 
     AVRO-1080. JsonIO.cc should allow \u escape sequence in string. (Keh-Li 
Sheng via thiru)
 
+    AVRO-1066. ArrayIndexOutOfBoundsException in ParsingEncoder when trying to 
use a json encoder to serialize a deep object graph. (thiru)
+
 Avro 1.6.3 (5 March 2012)
 
   IMPROVEMENTS

Modified: 
avro/trunk/lang/java/avro/src/main/java/org/apache/avro/io/ParsingEncoder.java
URL: 
http://svn.apache.org/viewvc/avro/trunk/lang/java/avro/src/main/java/org/apache/avro/io/ParsingEncoder.java?rev=1337322&r1=1337321&r2=1337322&view=diff
==============================================================================
--- 
avro/trunk/lang/java/avro/src/main/java/org/apache/avro/io/ParsingEncoder.java 
(original)
+++ 
avro/trunk/lang/java/avro/src/main/java/org/apache/avro/io/ParsingEncoder.java 
Fri May 11 18:07:25 2012
@@ -49,10 +49,10 @@ public abstract class ParsingEncoder ext
 
   /** Push a new collection on to the stack. */
   protected final void push() {
-    if (pos == counts.length) {
+    if (++pos == counts.length) {
       counts = Arrays.copyOf(counts, pos + 10);
     }
-    counts[++pos] = 0;
+    counts[pos] = 0;
   }
   
   protected final void pop() {

Modified: 
avro/trunk/lang/java/avro/src/test/java/org/apache/avro/io/TestValidatingIO.java
URL: 
http://svn.apache.org/viewvc/avro/trunk/lang/java/avro/src/test/java/org/apache/avro/io/TestValidatingIO.java?rev=1337322&r1=1337321&r2=1337322&view=diff
==============================================================================
--- 
avro/trunk/lang/java/avro/src/test/java/org/apache/avro/io/TestValidatingIO.java
 (original)
+++ 
avro/trunk/lang/java/avro/src/test/java/org/apache/avro/io/TestValidatingIO.java
 Fri May 11 18:07:25 2012
@@ -835,6 +835,13 @@ public class TestValidatingIO {
           + "{\"name\":\"car\", \"type\":\"Lisp\"},"
           + "{\"name\":\"cdr\", \"type\":\"Lisp\"}]}]}]}",
           "U2U1S10U0N"},
+          
+        // Deep recursion
+        { "{\"type\": \"record\", \"name\": \"Node\", \"fields\": ["
+          + "{\"name\":\"children\", \"type\":"
+          + "{\"type\": \"array\", \"items\": \"Node\" }}]}",
+          "[c1s[c1s[c1s[c1s[c1s[c1s[c1s[c1s[c1s[c1s[c1s[]]]]]]]]]]]]" },
+              
     };
   }
   


Reply via email to