diff --git a/level/rrrr.go b/level/rrrr.go index 30a3484..eec002c 100644 --- a/level/rrrr.go +++ b/level/rrrr.go @@ -98,11 +98,11 @@ func (r *RealStorage) resize(bpe uint8) { for i := range r.format.Len { var v int32 if resizeDirect { - v = int32((r.data[i/r.elementsPerLong] >> ((i % r.elementsPerLong) * int32(r.bpe))) & r.mask) + v, _ = r.Get(i) } else { v = int32((r.data[i/r.elementsPerLong] >> ((i % r.elementsPerLong) * int32(r.bpe))) & r.mask) } - r.data[i/r.elementsPerLong] |= uint64(v) << ((i % r.elementsPerLong) * int32(bpe)) + newData[i/int32(numberOfElements)] |= uint64(v) << ((i % int32(numberOfElements)) * int32(bpe)) } if resizeDirect { r.palette = nil diff --git a/level/rrrr_test.go b/level/rrrr_test.go index a5edd1c..c69cda2 100644 --- a/level/rrrr_test.go +++ b/level/rrrr_test.go @@ -292,7 +292,7 @@ func TestRealStorageDirectModeNoPalette(t *testing.T) { } data := make([]uint64, 36) - data[0] = 0x1FFFF + data[0] = 0x1FF s, err := format.ImportDataDirect(data) if err != nil { @@ -303,8 +303,8 @@ func TestRealStorageDirectModeNoPalette(t *testing.T) { if err != nil { t.Fatalf("Get(0) failed: %v", err) } - if got != 0x1FFFF { - t.Errorf("Get(0) = %d, want %d", got, 0x1FFFF) + if got != 0x1FF { + t.Errorf("Get(0) = %d, want %d", got, 0x1FF) } }