diff --git a/src/kernel/memory/pmm.c b/src/kernel/memory/pmm.c index b17bf9d..70a8ef8 100644 --- a/src/kernel/memory/pmm.c +++ b/src/kernel/memory/pmm.c @@ -9,5 +9,7 @@ void pmm_free(void *c) void *pmm_alloc() { - return first; + void *c = first; + first = 0; + return c; } diff --git a/src/kernel/memory/pmm.tt b/src/kernel/memory/pmm.tt index 59ca725..7ddca08 100644 --- a/src/kernel/memory/pmm.tt +++ b/src/kernel/memory/pmm.tt @@ -18,3 +18,10 @@ TEST(alloc_returns_0_if_no_free_pages) void *a = pmm_alloc(); ASSERT_EQ_PTR(a, 0); } +TEST(alloc_zero_after_all_free_pages) +{ + pmm_free(&mem[0]); + pmm_alloc(); + void *a = pmm_alloc(); + ASSERT_EQ_PTR(a, 0); +}