diff options
| author | frsyuki <frsyuki@users.sourceforge.jp> | 2010-05-23 01:38:01 +0900 |
|---|---|---|
| committer | frsyuki <frsyuki@users.sourceforge.jp> | 2010-05-23 01:38:01 +0900 |
| commit | fa6ea6848f3c639d64e223afe31d0fa2ba13d333 (patch) | |
| tree | ff14194a9af30c8ae7b7a78deeb37ac65e418f7b /java | |
| parent | 5982970e21d9bab7ea2bd507b360317f40628260 (diff) | |
| download | msgpack-python-fa6ea6848f3c639d64e223afe31d0fa2ba13d333.tar.gz | |
java: fixed problem that empty array and empty map don't check Schema
Diffstat (limited to 'java')
| -rw-r--r-- | java/src/main/java/org/msgpack/UnpackerImpl.java | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/java/src/main/java/org/msgpack/UnpackerImpl.java b/java/src/main/java/org/msgpack/UnpackerImpl.java index 9b885a0..10cf5f0 100644 --- a/java/src/main/java/org/msgpack/UnpackerImpl.java +++ b/java/src/main/java/org/msgpack/UnpackerImpl.java @@ -348,7 +348,10 @@ public class UnpackerImpl { castBuffer.put(src, n, 2); count = ((int)castBuffer.getShort(0)) & 0xffff; obj = new Object[count]; - if(count == 0) { break _push; } // FIXME check IArraySchema + if(count == 0) { + obj = ((IArraySchema)top_schema).createFromArray((Object[])obj); + break _push; + } ++top; stack_obj[top] = top_obj; stack_ct[top] = top_ct; @@ -371,7 +374,10 @@ public class UnpackerImpl { // FIXME overflow check count = castBuffer.getInt(0) & 0x7fffffff; obj = new Object[count]; - if(count == 0) { break _push; } // FIXME check IArraySchema + if(count == 0) { + obj = ((IArraySchema)top_schema).createFromArray((Object[])obj); + break _push; + } ++top; stack_obj[top] = top_obj; stack_ct[top] = top_ct; @@ -393,7 +399,10 @@ public class UnpackerImpl { castBuffer.put(src, n, 2); count = ((int)castBuffer.getShort(0)) & 0xffff; obj = new Object[count*2]; - if(count == 0) { break _push; } // FIXME check IMapSchema + if(count == 0) { + obj = ((IMapSchema)top_schema).createFromMap((Object[])obj); + break _push; + } //System.out.println("fixmap count:"+count); ++top; stack_obj[top] = top_obj; @@ -417,7 +426,10 @@ public class UnpackerImpl { // FIXME overflow check count = castBuffer.getInt(0) & 0x7fffffff; obj = new Object[count*2]; - if(count == 0) { break _push; } // FIXME check IMapSchema + if(count == 0) { + obj = ((IMapSchema)top_schema).createFromMap((Object[])obj); + break _push; + } //System.out.println("fixmap count:"+count); ++top; stack_obj[top] = top_obj; |
