From 3f3210205f147b03b262d48e008ea97965ff3395 Mon Sep 17 00:00:00 2001 From: Peter Evans Date: Fri, 15 Dec 2017 21:22:22 -0600 Subject: [PATCH] We missed the size multiplier for memset() In doing so, only a small portion of memory would have reliably been set to zero; specifically, just the first element! This change should resolve some intermittent test failures to guarantee that all memory be zeroed. --- src/vm_segment.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vm_segment.c b/src/vm_segment.c index 80556ab..c02e03e 100644 --- a/src/vm_segment.c +++ b/src/vm_segment.c @@ -40,7 +40,7 @@ vm_segment_create(size_t size) // We should zero out memory and make explicit that any new segment // begins life in that state. - memset(segment->memory, 0, sizeof(vm_8bit)); + memset(segment->memory, 0, sizeof(vm_8bit) * size); segment->read_table = malloc(sizeof(vm_segment_read_fn) * size); if (segment->read_table == NULL) { @@ -59,8 +59,8 @@ vm_segment_create(size_t size) // read/write mapper code to attempt to a run a function with // garbage. We could have undefined garbage! We can only properly // work with defined garbage. - memset(segment->read_table, (int)NULL, sizeof(vm_segment_read_fn)); - memset(segment->write_table, (int)NULL, sizeof(vm_segment_write_fn)); + memset(segment->read_table, (int)NULL, sizeof(vm_segment_read_fn) * size); + memset(segment->write_table, (int)NULL, sizeof(vm_segment_write_fn) * size); segment->size = size;