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[]]]]]]]]]]]]" }, + }; }