diff --git a/lua/flatbuffers/builder.lua b/lua/flatbuffers/builder.lua index 51f0797e0..2fb22204d 100644 --- a/lua/flatbuffers/builder.lua +++ b/lua/flatbuffers/builder.lua @@ -34,7 +34,7 @@ local function vtableEqual(a, objectStart, b) end for i, elem in ipairs(a) do - local x = VOffsetT:Unpack(b, i * VOffsetT.bytewidth) + local x = string.unpack(VOffsetT.packFmt, b, 1 + (i - 1) * VOffsetT.bytewidth) if x ~= 0 or elem ~= 0 then local y = objectStart - elem if x ~= y then @@ -96,11 +96,13 @@ function mt:WriteVtable() i = i - 1 end + i = #self.vtables while i >= 1 do local vt2Offset = self.vtables[i] local vt2Start = #self.bytes - vt2Offset - local vt2len = VOffsetT:Unpack(self.bytes, vt2Start) + local vt2lenstr = self.bytes:Slice(vt2Start, vt2Start+1) + local vt2Len = string.unpack(VOffsetT.packFmt, vt2lenstr, 1) local metadata = VtableMetadataFields * VOffsetT.bytewidth local vt2End = vt2Start + vt2Len @@ -364,4 +366,4 @@ function mt:Place(x, flags) self.bytes:Set(d, h) end -return m \ No newline at end of file +return m