diff --git a/libctru/include/3ds/linear.h b/libctru/include/3ds/linear.h index 8722f81..8289f31 100644 --- a/libctru/include/3ds/linear.h +++ b/libctru/include/3ds/linear.h @@ -4,5 +4,6 @@ void* linearAlloc(size_t size); // returns a 16-byte aligned address void* linearMemAlign(size_t size, size_t alignment); void* linearRealloc(void* mem, size_t size); // not implemented yet +void* linearCalloc(size_t num, size_t size); void linearFree(void* mem); u32 linearSpaceFree(); // get free linear space in bytes diff --git a/libctru/include/3ds/vram.h b/libctru/include/3ds/vram.h index 9743410..2ee854c 100644 --- a/libctru/include/3ds/vram.h +++ b/libctru/include/3ds/vram.h @@ -4,5 +4,6 @@ void* vramAlloc(size_t size); // returns a 16-byte aligned address void* vramMemAlign(size_t size, size_t alignment); void* vramRealloc(void* mem, size_t size); // not implemented yet +void* vramCalloc(size_t num, size_t size); void vramFree(void* mem); u32 vramSpaceFree(); // get free VRAM space in bytes diff --git a/libctru/source/allocator/linear.cpp b/libctru/source/allocator/linear.cpp index 0ad052c..1661b81 100644 --- a/libctru/source/allocator/linear.cpp +++ b/libctru/source/allocator/linear.cpp @@ -70,6 +70,16 @@ void* linearRealloc(void* mem, size_t size) return NULL; } +void* linearCalloc(size_t num, size_t size) +{ + char* res = (char*)linearAlloc(size*num); + size_t i; + for(i=0;i