From ec30538a81c0e900797f4d88c1ee059afa7d9617 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Fri, 30 Aug 2024 18:54:12 +0300 Subject: fix a couple memory issues + get_mem_node() clears out the memory so we don't accidentally read stale flags + Thread creation simplified a bit, each thread references itself and data freeing is based on when the reference count reaches zero. --- src/regions.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/regions.c') diff --git a/src/regions.c b/src/regions.c index adc0271..d5f431d 100644 --- a/src/regions.c +++ b/src/regions.c @@ -34,7 +34,9 @@ void destroy_mem_nodes() */ static struct mem_region *get_mem_node() { - return (struct mem_region *)get_node(&root); + struct mem_region *r = get_node(&root); + memset(r, 0, sizeof(struct mem_region)); + return r; } /** @@ -178,6 +180,7 @@ stat_t init_region(struct mem_region_root *r, vm_t start, size_t arena_size, struct mem_region *m = get_mem_node(); m->start = start; m->end = start + arena_size; + m->flags = 0; r->reserved = __page(reserved); r->start = m->start; -- cgit v1.3