|
@@ -47,6 +47,7 @@
|
|
|
void * realloc(void *ptr, size_t size) {
|
|
|
raw_block_header_t *current_raw_block;
|
|
|
bool found;
|
|
|
+ void *return_ptr;
|
|
|
|
|
|
if(ptr == NULL) {
|
|
|
return malloc(size);
|
|
@@ -54,7 +55,8 @@ void * realloc(void *ptr, size_t size) {
|
|
|
|
|
|
if(size == 0) {
|
|
|
free(ptr);
|
|
|
- return malloc((size_t) 32); // FIXME 32 <- minimum size
|
|
|
+ return_ptr = malloc((size_t) 32); // FIXME 32 <- minimum size
|
|
|
+ goto done;
|
|
|
}
|
|
|
|
|
|
current_raw_block = systemallocator.raw_block_head;
|
|
@@ -87,7 +89,8 @@ void * realloc(void *ptr, size_t size) {
|
|
|
#endif /* FL_RB_ONLY */
|
|
|
((char *)current_raw_block + sizeof(raw_block_header_t));
|
|
|
|
|
|
- return dmmlib_realloc(encapsulated_rb, ptr, size);
|
|
|
+ return_ptr = dmmlib_realloc(encapsulated_rb, ptr, size);
|
|
|
+ goto done;
|
|
|
|
|
|
} else { /* This has to be a big block */
|
|
|
|
|
@@ -113,18 +116,19 @@ void * realloc(void *ptr, size_t size) {
|
|
|
#ifdef WITH_ALLOCATOR_STATS
|
|
|
systemallocator.dmm_stats.total_mem_allocated -=
|
|
|
remaining_size;
|
|
|
- TRACE_1("dmmlib - global allocated memory: %zu bytes\n",
|
|
|
+ TRACE_2("dmmlib - global allocated memory: %zu bytes\n",
|
|
|
systemallocator.dmm_stats.total_mem_allocated);
|
|
|
#ifdef REQUEST_SIZE_INFO
|
|
|
systemallocator.dmm_stats.total_mem_requested -=
|
|
|
remaining_size;
|
|
|
- TRACE_1("dmmlib - global requested memory: %zu bytes\n",
|
|
|
+ TRACE_2("dmmlib - global requested memory: %zu bytes\n",
|
|
|
systemallocator.dmm_stats.total_mem_requested);
|
|
|
#endif /* REQUEST_SIZE_INFO */
|
|
|
systemallocator.dmm_stats.num_realloc++;
|
|
|
#endif /* WITH_ALLOCATOR_STATS */
|
|
|
|
|
|
- return ptr;
|
|
|
+ return_ptr = ptr;
|
|
|
+ goto done;
|
|
|
|
|
|
} else {
|
|
|
|
|
@@ -135,7 +139,8 @@ void * realloc(void *ptr, size_t size) {
|
|
|
|
|
|
if(new_block == NULL) {
|
|
|
|
|
|
- return NULL;
|
|
|
+ return_ptr = NULL;
|
|
|
+ goto done;
|
|
|
|
|
|
} else {
|
|
|
|
|
@@ -159,8 +164,17 @@ void * realloc(void *ptr, size_t size) {
|
|
|
systemallocator.dmm_stats.num_realloc++;
|
|
|
#endif /* WITH_ALLOCATOR_STATS */
|
|
|
|
|
|
- return (void *)((char *)new_block + sizeof(raw_block_header_t));
|
|
|
+ return_ptr = (void *)((char *)new_block +
|
|
|
+ sizeof(raw_block_header_t));
|
|
|
+ goto done;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+done:
|
|
|
+
|
|
|
+ TRACE_1("dmmlib - r %p %p %zu\n", ptr, return_ptr, size);
|
|
|
+
|
|
|
+ return return_ptr;
|
|
|
+
|
|
|
}
|