Always add additional space if no more is available
authorKyle Jones <kyle@kyjedj.com>
Tue, 31 Mar 2015 19:16:36 +0000 (12:16 -0700)
committerWouter van Oortmerssen <wvo@google.com>
Mon, 6 Apr 2015 18:44:22 +0000 (11:44 -0700)
Change-Id: If08b2d839489d40e977de794b13584fa66ff32c1

go/builder.go
tests/go_test.go

index e1b1f43..590c068 100644 (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)
index 03eaddf..492b896 100644 (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)