Skip to content

Commit 6f67028

Browse files
committed
Fixing a bug in GetSerializedSizeInBytes... we overallocate!
1 parent 37e3834 commit 6f67028

File tree

2 files changed

+25
-10
lines changed

2 files changed

+25
-10
lines changed

bitmapcontainer.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,8 @@ func (bc *bitmapContainer) getSizeInBytes() int {
164164
}
165165

166166
func (bc *bitmapContainer) serializedSizeInBytes() int {
167-
return bc.Msgsize()
168-
//return len(bc.bitmap) * 8 // + bcBaseBytes
167+
//return bc.Msgsize()// NOO! This breaks GetSerializedSizeInBytes
168+
return len(bc.bitmap) * 8
169169
}
170170

171171
const bcBaseBytes = int(unsafe.Sizeof(bitmapContainer{}))

serialization_test.go

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ func TestSerializationOfEmptyBitmap(t *testing.T) {
2323
if err != nil {
2424
t.Errorf("Failed writing")
2525
}
26-
26+
if uint64(buf.Len()) != rb.GetSerializedSizeInBytes() {
27+
t.Errorf("Bad GetSerializedSizeInBytes")
28+
}
2729
newrb := NewBitmap()
2830
_, err = newrb.ReadFrom(buf)
2931
if err != nil {
@@ -67,7 +69,9 @@ func TestSerializationBasic037(t *testing.T) {
6769
if err != nil {
6870
t.Errorf("Failed writing")
6971
}
70-
72+
if uint64(buf.Len()) != rb.GetSerializedSizeInBytes() {
73+
t.Errorf("Bad GetSerializedSizeInBytes")
74+
}
7175
newrb := NewBitmap()
7276
_, err = newrb.ReadFrom(buf)
7377
if err != nil {
@@ -87,10 +91,14 @@ func TestSerializationToFile038(t *testing.T) {
8791
if err != nil {
8892
t.Errorf("Can't open a file for writing")
8993
}
90-
_, err = rb.WriteTo(fout)
94+
var l int64
95+
l, err = rb.WriteTo(fout)
9196
if err != nil {
9297
t.Errorf("Failed writing")
9398
}
99+
if uint64(l) != rb.GetSerializedSizeInBytes() {
100+
t.Errorf("Bad GetSerializedSizeInBytes")
101+
}
94102
fout.Close()
95103

96104
newrb := NewBitmap()
@@ -149,10 +157,15 @@ func TestSerializationBasic4WriteAndReadFile040(t *testing.T) {
149157
if err != nil {
150158
t.Errorf("Failed creating '%s'", fname)
151159
}
152-
_, err = rb.WriteTo(fout)
160+
var l int64
161+
162+
l, err = rb.WriteTo(fout)
153163
if err != nil {
154164
t.Errorf("Failed writing to '%s'", fname)
155165
}
166+
if uint64(l) != rb.GetSerializedSizeInBytes() {
167+
t.Errorf("Bad GetSerializedSizeInBytes")
168+
}
156169
fout.Close()
157170

158171
fin, err := os.Open(fname)
@@ -294,6 +307,9 @@ func TestSerializationBasic3_042(t *testing.T) {
294307
if err != nil {
295308
t.Errorf("Failed writing")
296309
}
310+
if uint64(buf.Len()) != rb.GetSerializedSizeInBytes() {
311+
t.Errorf("Bad GetSerializedSizeInBytes")
312+
}
297313

298314
newrb := NewBitmap()
299315
_, err = newrb.ReadFrom(&buf)
@@ -421,7 +437,6 @@ func TestSerializationArrayOnly032(t *testing.T) {
421437
buf := &bytes.Buffer{}
422438
_, err := ac.writeTo(buf)
423439
panicOn(err)
424-
425440
// have to pre-size the array write-target properly
426441
// by telling it the cardinality to read.
427442
ac2 := newArrayContainerSize(int(ac.getCardinality()))
@@ -473,7 +488,6 @@ func TestSerializationRunOnly033(t *testing.T) {
473488
buf := &bytes.Buffer{}
474489
_, err := ac.writeTo(buf)
475490
panicOn(err)
476-
477491
ac2 := newRunContainer16()
478492

479493
_, err = ac2.readFrom(buf)
@@ -524,7 +538,6 @@ func TestSerializationBitmapOnly034(t *testing.T) {
524538
buf := &bytes.Buffer{}
525539
_, err := bc.writeTo(buf)
526540
panicOn(err)
527-
528541
bc2 := newBitmapContainer()
529542

530543
_, err = bc2.readFrom(buf)
@@ -818,7 +831,9 @@ func TestBitmap_FromBuffer(t *testing.T) {
818831
if err != nil {
819832
t.Fatalf("Failed writing")
820833
}
821-
834+
if uint64(buf.Len()) != rb.GetSerializedSizeInBytes() {
835+
t.Errorf("Bad GetSerializedSizeInBytes")
836+
}
822837
newRb := NewBitmap()
823838
newRb.FromBuffer(buf.Bytes())
824839

0 commit comments

Comments
 (0)