Fixed vectors reserving wrong amount of space in Java.
authorWouter van Oortmerssen <wvo@google.com>
Wed, 9 Jul 2014 00:14:02 +0000 (17:14 -0700)
committerWouter van Oortmerssen <wvo@google.com>
Wed, 9 Jul 2014 18:43:30 +0000 (11:43 -0700)
In the generated code, the type of the vector was used for
the element size, instead of the vector element type.

Change-Id: Ie16d5221a61474365292c948fd3af99e2a7716c7
Tested: on Windows.

src/idl_gen_java.cpp
tests/MyGame/Example/Monster.java

index c3d0ba7..89eb051 100755 (executable)
@@ -335,7 +335,7 @@ static void GenStruct(StructDef &struct_def,
         code += "  public static void start" + MakeCamel(field.name);
         code += "Vector(FlatBufferBuilder builder, int numElems) ";
         code += "{ builder.startVector(";
-        code += NumToString(InlineSize(field.value.type));
+        code += NumToString(InlineSize(field.value.type.VectorType()));
         code += ", numElems); }\n";
       }
     }
index aa0bf7f..26bdf70 100755 (executable)
@@ -36,7 +36,7 @@ public class Monster extends Table {
   public static void addHp(FlatBufferBuilder builder, short hp) { builder.addShort(2, hp, 100); }
   public static void addName(FlatBufferBuilder builder, int name) { builder.addOffset(3, name, 0); }
   public static void addInventory(FlatBufferBuilder builder, int inventory) { builder.addOffset(5, inventory, 0); }
-  public static void startInventoryVector(FlatBufferBuilder builder, int numElems) { builder.startVector(4, numElems); }
+  public static void startInventoryVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems); }
   public static void addColor(FlatBufferBuilder builder, byte color) { builder.addByte(6, color, 2); }
   public static void addTestType(FlatBufferBuilder builder, byte testType) { builder.addByte(7, testType, 0); }
   public static void addTest(FlatBufferBuilder builder, int test) { builder.addOffset(8, test, 0); }