]> git.buserror.net Git - polintos/scott/priv.git/blobdiff - kernel/lib/libc.cc
random kernel stuff
[polintos/scott/priv.git] / kernel / lib / libc.cc
index 60bdee24305d2151edbdcb21ddde258e41c5d3f5..e571384048458bf9d9ee49e0e593900affd30fe4 100644 (file)
@@ -539,6 +539,8 @@ void *memset(void *b, int ch, size_t len)
 
 void *malloc(size_t len)
 {
+       assert(len <= Arch::page_size - sizeof(size_t));
+
        len = (len + sizeof(size_t) + Arch::page_size - 1) / Arch::page_size;
        Mem::Page *page = Mem::PageAlloc::alloc(len);
        
@@ -551,8 +553,7 @@ void *malloc(size_t len)
 void free(void *addr)
 {
        if (addr) {
-               size_t *ptr = (size_t *)addr;
-               ptr--;
+               size_t *ptr = (size_t *)addr - 1;
                size_t len = *ptr;
                Mem::Page *page = Mem::kvirt_to_page(addr);
                Mem::PageAlloc::free(page, len);