aboutsummaryrefslogtreecommitdiff
path: root/src/lib/mem.c
diff options
context:
space:
mode:
authorChristian Cunningham <cc@localhost>2022-01-05 14:01:29 -0800
committerChristian Cunningham <cc@localhost>2022-01-05 14:01:29 -0800
commit3a8ed19bf83f11ff00c4904fab2cc083b7e33478 (patch)
tree9d9a6f92f9d74001e969d23ea79ad26f6227fea2 /src/lib/mem.c
parentf3ea4cd0c22f351d8dfffb0e937194c4b526b665 (diff)
Cleaned up/ Standardized
Diffstat (limited to 'src/lib/mem.c')
-rw-r--r--src/lib/mem.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/lib/mem.c b/src/lib/mem.c
index d738305..2b495ef 100644
--- a/src/lib/mem.c
+++ b/src/lib/mem.c
@@ -73,6 +73,7 @@ void* malloca(unsigned char size, unsigned char amnt)
unsigned long diff = (unsigned long)mem + i + 2;
diff %= amnt;
diff = amnt - diff;
+ diff %= amnt;
if((mem[i] == size) && mem[i+1]==0) {
if(diff == 0) {
mem[i] = size;
@@ -90,7 +91,6 @@ void* malloca(unsigned char size, unsigned char amnt)
diff += amnt;
}
mem[i] = diff-2;
- mem[i+1] = 0;
i += diff;
mem[i] = size;
mem[i+1] = 1;
@@ -116,6 +116,11 @@ void free(void* memloc)
for(unsigned int i = 0; i < size; i++) {
base[i+2] = 0;
}
+ // If it is the last entry, clear it and move the heap top down
+ if (base + size + 2 == rpi_heap_top) {
+ base[0] = 0;
+ rpi_heap_top = base;
+ }
}
void* heap_base(void)