diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-08-30 18:54:12 +0300 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-08-30 18:54:12 +0300 |
| commit | ec30538a81c0e900797f4d88c1ee059afa7d9617 (patch) | |
| tree | f434909b7c0fa6d41b3550141823fd016ad8fff5 /src/regions.c | |
| parent | 5cc76c436fa1234323bad51d72d1291d95991da6 (diff) | |
| download | kmi-ec30538a81c0e900797f4d88c1ee059afa7d9617.tar.gz kmi-ec30538a81c0e900797f4d88c1ee059afa7d9617.zip | |
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.
Diffstat (limited to 'src/regions.c')
| -rw-r--r-- | src/regions.c | 5 |
1 files changed, 4 insertions, 1 deletions
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; |
