diff --git a/include/flatbuffers/flatbuffers.h b/include/flatbuffers/flatbuffers.h index 7b72319df..e1999f90a 100644 --- a/include/flatbuffers/flatbuffers.h +++ b/include/flatbuffers/flatbuffers.h @@ -649,11 +649,15 @@ class FlatBufferBuilder FLATBUFFERS_FINAL_CLASS { // Specialized version for non-copying use cases. Data to be written later. // After calling this function, GetBufferPointer() can be cast to the // corresponding Vector<> type to write the data (through Data()). - template Offset> CreateUninitializedVector(size_t len) { + uoffset_t CreateUninitializedVector(size_t len, size_t elemsize) { NotNested(); - StartVector(len, sizeof(T)); - buf_.make_space(len * sizeof(T)); - return Offset>(EndVector(len)); + StartVector(len, elemsize); + buf_.make_space(len * elemsize); + return EndVector(len); + } + + template Offset> CreateUninitializedVector(size_t len) { + return CreateUninitializedVector(len, sizeof(T)); } template Offset> CreateVector(const std::vector &v){ diff --git a/tests/test.cpp b/tests/test.cpp index 46d3f9524..eb55df7c0 100644 --- a/tests/test.cpp +++ b/tests/test.cpp @@ -137,7 +137,7 @@ void AccessFlatBufferTest(const std::string &flatbuf) { TEST_EQ(pos->test3().b(), 20); auto inventory = monster->inventory(); - TEST_EQ(VectorLength(inventory), 10); // Works even if inventory is null. + TEST_EQ(VectorLength(inventory), 10UL); // Works even if inventory is null. TEST_NOTNULL(inventory); unsigned char inv_data[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; for (auto it = inventory->begin(); it != inventory->end(); ++it)