Merge pull request #136 from tendermint/fix-bitArray-nil-update
common: fix BitArray.Update to avoid nil dereference
This commit is contained in:
commit
13f009bf68
|
@ -306,7 +306,7 @@ func (bA *BitArray) Bytes() []byte {
|
||||||
// so if necessary, caller must copy or lock o prior to calling Update.
|
// so if necessary, caller must copy or lock o prior to calling Update.
|
||||||
// If bA is nil, does nothing.
|
// If bA is nil, does nothing.
|
||||||
func (bA *BitArray) Update(o *BitArray) {
|
func (bA *BitArray) Update(o *BitArray) {
|
||||||
if bA == nil {
|
if bA == nil || o == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
bA.mtx.Lock()
|
bA.mtx.Lock()
|
||||||
|
|
|
@ -164,3 +164,25 @@ func TestEmptyFull(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestUpdateNeverPanics(t *testing.T) {
|
||||||
|
newRandBitArray := func(n int) *BitArray {
|
||||||
|
ba, _ := randBitArray(n)
|
||||||
|
return ba
|
||||||
|
}
|
||||||
|
pairs := []struct {
|
||||||
|
a, b *BitArray
|
||||||
|
}{
|
||||||
|
{nil, nil},
|
||||||
|
{newRandBitArray(10), newRandBitArray(12)},
|
||||||
|
{newRandBitArray(23), newRandBitArray(23)},
|
||||||
|
{newRandBitArray(37), nil},
|
||||||
|
{nil, NewBitArray(10)},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, pair := range pairs {
|
||||||
|
a, b := pair.a, pair.b
|
||||||
|
a.Update(b)
|
||||||
|
b.Update(a)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue