Ensure a lock is taken before bc_vec_free()
Signed-off-by: Gavin Howard <gavin@yzena.com>
diff --git a/src/vm.c b/src/vm.c
index a5a77a5..d9404e2 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -421,9 +421,12 @@
void bc_vm_freeTemps(void) {
size_t i;
+ sig_atomic_t lock;
if (!vm.temps.cap) return;
+ BC_SIG_TRYLOCK(lock);
+
for (i = 0; i < vm.temps.len; ++i) {
free(((BcNum*) bc_vec_item(&vm.temps, i))->num);
}
@@ -431,6 +434,8 @@
bc_vec_free(&vm.temps);
vm.temps.cap = 0;
vm.temps.len = 0;
+
+ BC_SIG_TRYUNLOCK(lock);
}
inline size_t bc_vm_arraySize(size_t n, size_t size) {