mirror of
https://github.com/wiiu-env/wut.git
synced 2025-01-22 09:31:13 +01:00
Improve overall handling of realloc
This commit is contained in:
parent
90e181c723
commit
f336936309
26
crt/memory.c
26
crt/memory.c
@ -20,15 +20,30 @@ __wrap_free(void *ptr) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t
|
||||||
|
__wrap_malloc_usable_size(void *ptr) {
|
||||||
|
return MEMGetSizeForMBlockExpHeap(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
void *
|
void *
|
||||||
__wrap_realloc(void *ptr, size_t size) {
|
__wrap_realloc(void *ptr, size_t size) {
|
||||||
|
if (!ptr) {
|
||||||
|
return __wrap_malloc(size);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (__wrap_malloc_usable_size(ptr) >= size) {
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
void *realloc_ptr = __wrap_malloc(size);
|
void *realloc_ptr = __wrap_malloc(size);
|
||||||
|
|
||||||
if(realloc_ptr) {
|
if(!realloc_ptr) {
|
||||||
memcpy(realloc_ptr, ptr, size);
|
return NULL;
|
||||||
__wrap_free(ptr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memcpy(realloc_ptr, ptr, __wrap_malloc_usable_size(ptr));
|
||||||
|
__wrap_free(ptr);
|
||||||
|
|
||||||
return realloc_ptr;
|
return realloc_ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,11 +58,6 @@ __wrap_calloc(size_t num, size_t size) {
|
|||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t
|
|
||||||
__wrap_malloc_usable_size(void *ptr) {
|
|
||||||
return MEMGetSizeForMBlockExpHeap(ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
void *
|
void *
|
||||||
__wrap_valloc(size_t size) {
|
__wrap_valloc(size_t size) {
|
||||||
return __wrap_memalign(64, size);
|
return __wrap_memalign(64, size);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user