Fixed AddFlatBuffer using wrong buffer length.

Also made the Xcode project link.

Tested: on OS X.
parent 7101224d
...@@ -334,8 +334,7 @@ const uint8_t *AddFlatBuffer(std::vector<uint8_t> &flatbuf, ...@@ -334,8 +334,7 @@ const uint8_t *AddFlatBuffer(std::vector<uint8_t> &flatbuf,
} }
auto insertion_point = static_cast<uoffset_t>(flatbuf.size()); auto insertion_point = static_cast<uoffset_t>(flatbuf.size());
// Insert the entire FlatBuffer minus the root pointer. // Insert the entire FlatBuffer minus the root pointer.
flatbuf.insert(flatbuf.end(), newbuf + sizeof(uoffset_t), flatbuf.insert(flatbuf.end(), newbuf + sizeof(uoffset_t), newbuf + newlen);
newbuf + newlen - sizeof(uoffset_t));
auto root_offset = ReadScalar<uoffset_t>(newbuf) - sizeof(uoffset_t); auto root_offset = ReadScalar<uoffset_t>(newbuf) - sizeof(uoffset_t);
return flatbuf.data() + insertion_point + root_offset; return flatbuf.data() + insertion_point + root_offset;
} }
......
...@@ -393,8 +393,8 @@ void ReflectionTest(uint8_t *flatbuf, size_t length) { ...@@ -393,8 +393,8 @@ void ReflectionTest(uint8_t *flatbuf, size_t length) {
// We do this last, so the pointer doesn't get invalidated (since it is // We do this last, so the pointer doesn't get invalidated (since it is
// at the end of the buffer): // at the end of the buffer):
auto string_ptr = flatbuffers::AddFlatBuffer(resizingbuf, auto string_ptr = flatbuffers::AddFlatBuffer(resizingbuf,
stringfbb.GetBufferPointer(), stringfbb.GetBufferPointer(),
stringfbb.GetSize()); stringfbb.GetSize());
// Finally, set the new value in the vector. // Finally, set the new value in the vector.
rtestarrayofstring->MutateOffset(2, string_ptr); rtestarrayofstring->MutateOffset(2, string_ptr);
TEST_EQ_STR(rtestarrayofstring->Get(0)->c_str(), "bob"); TEST_EQ_STR(rtestarrayofstring->Get(0)->c_str(), "bob");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment