From a1bce81ed0f082aaa199d565aa6b996ec1b09443 Mon Sep 17 00:00:00 2001 From: Christoffer Lerno Date: Fri, 6 Oct 2023 01:27:32 +0200 Subject: [PATCH] Fix growable bitset (#1032) --- lib/std/collections/bitset.c3 | 7 ++++++- test/unit/stdlib/collections/bitset.c3 | 1 - 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/std/collections/bitset.c3 b/lib/std/collections/bitset.c3 index e46c536e1..cb6beb6d3 100644 --- a/lib/std/collections/bitset.c3 +++ b/lib/std/collections/bitset.c3 @@ -106,10 +106,15 @@ fn void GrowableBitSet.set(&self, usz i) { usz q = i / BITS; usz r = i % BITS; - if (q >= self.data.len()) + usz current_len = self.data.len(); + if (q >= current_len) { usz n = q + 1; self.data.reserve(n); + if (n - 1 >= current_len) + { + self.data.entries[current_len .. (n - 1)] = 0; + } self.data.size = n; } self.data.set(q, self.data[q] | (1 << r)); diff --git a/test/unit/stdlib/collections/bitset.c3 b/test/unit/stdlib/collections/bitset.c3 index e56867295..a31e63ca6 100644 --- a/test/unit/stdlib/collections/bitset.c3 +++ b/test/unit/stdlib/collections/bitset.c3 @@ -47,7 +47,6 @@ fn void! set_get() } def GrowableBitSet = GrowableBitSet(); - fn void! growable_set_get() { GrowableBitSet bs;