Always add additional space if no more is available

Change-Id: If08b2d839489d40e977de794b13584fa66ff32c1
This commit is contained in:
Kyle Jones 2015-03-31 12:16:36 -07:00 committed by Wouter van Oortmerssen
parent 803f9bba27
commit c4a3e2f6bd
2 changed files with 17 additions and 2 deletions

View File

@ -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)

View File

@ -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)