From c4a3e2f6bd90569637997c68a0a87d3a28e3db52 Mon Sep 17 00:00:00 2001 From: Kyle Jones Date: Tue, 31 Mar 2015 12:16:36 -0700 Subject: [PATCH] Always add additional space if no more is available Change-Id: If08b2d839489d40e977de794b13584fa66ff32c1 --- go/builder.go | 2 +- tests/go_test.go | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/go/builder.go b/go/builder.go index e1b1f4308..590c0682b 100644 --- a/go/builder.go +++ b/go/builder.go @@ -198,7 +198,7 @@ func (b *Builder) Prep(size, additionalBytes int) { alignSize &= (size - 1) // Reallocate the buffer if needed: - for int(b.head) < alignSize+size+additionalBytes { + for int(b.head) <= alignSize+size+additionalBytes { oldBufSize := len(b.Bytes) b.growByteBuffer() b.head += UOffsetT(len(b.Bytes) - oldBufSize) diff --git a/tests/go_test.go b/tests/go_test.go index 03eaddfad..492b89633 100644 --- a/tests/go_test.go +++ b/tests/go_test.go @@ -21,12 +21,13 @@ import ( "bytes" "flag" "fmt" - flatbuffers "github.com/google/flatbuffers/go" "io/ioutil" "os" "reflect" "sort" "testing" + + flatbuffers "github.com/google/flatbuffers/go" ) var ( @@ -479,6 +480,20 @@ func CheckByteLayout(fail func(string, ...interface{})) { b.EndVector(2) check([]byte{2, 0, 0, 0, 2, 1, 0, 0}) // padding + // test 3b: 11xbyte vector matches builder size + + b = flatbuffers.NewBuilder(12) + b.StartVector(flatbuffers.SizeByte, 8, 1) + start := []byte{} + check(start) + for i := 1; i < 12; i++ { + b.PrependByte(byte(i)) + start = append([]byte{byte(i)}, start...) + check(start) + } + b.EndVector(8) + check(append([]byte{8, 0, 0, 0}, start...)) + // test 4: 1xuint16 vector b = flatbuffers.NewBuilder(0)