From e3ee24830e41fe54ec88db15a8c8838d5706a530 Mon Sep 17 00:00:00 2001 From: Justin Davis Date: Mon, 17 Nov 2025 16:43:28 -0500 Subject: [PATCH] Fix Issue #8653 - Python vtables not considering object size (#8683) * have vtables consider size * simplification from comment --------- Co-authored-by: Wouter van Oortmerssen --- python/flatbuffers/builder.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/python/flatbuffers/builder.py b/python/flatbuffers/builder.py index 71d0eba75..2fe3aa367 100644 --- a/python/flatbuffers/builder.py +++ b/python/flatbuffers/builder.py @@ -245,7 +245,10 @@ class Builder(object): vtKey.append(elem) + objectSize = UOffsetTFlags.py_type(objectOffset - self.objectEnd) + vtKey.append(objectSize) vtKey = tuple(vtKey) + # calculate the size of the object vt2Offset = self.vtables.get(vtKey) if vt2Offset is None: # Did not find a vtable, so write this one to the buffer. @@ -275,7 +278,6 @@ class Builder(object): # The two metadata fields are written last. # First, store the object bytesize: - objectSize = UOffsetTFlags.py_type(objectOffset - self.objectEnd) self.PrependVOffsetT(VOffsetTFlags.py_type(objectSize)) # Second, store the vtable bytesize: