Browse Source

custom_memcpy() should copy the blocks after the HEADER_SIZE, wrong call of custom_memcpy().

Ioannis Koutras 14 years ago
parent
commit
136fab9dc8
1 changed files with 4 additions and 6 deletions
  1. 4 6
      src/custom_realloc.c

+ 4 - 6
src/custom_realloc.c

@@ -43,17 +43,15 @@ void * clean_realloc(allocator_t *allocator, heap_t *heap, void *ptr,
 /**
  * Copy a memory area
  */
-static void * custom_memcpy(void* dest, const void* src, size_t n) {
+static void custom_memcpy(void* dest, const void* src, size_t n) {
     char *dst8, *src8;
     
-    dst8 = (char *) dest;
-    src8 = (char *) src;
+    dst8 = (char *) dest + HEADER_SIZE;
+    src8 = (char *) src + HEADER_SIZE;
     
     while(n--) {
         *dst8++ = *src8++;
     }
-
-    return dest;
 }
 
 void * clean_realloc(allocator_t *allocator, heap_t *heap, void *ptr, 
@@ -63,7 +61,7 @@ void * clean_realloc(allocator_t *allocator, heap_t *heap, void *ptr,
 
     old_size = get_size(ptr);
     new_ptr = custom_ahmalloc(allocator, heap, size);
-    new_ptr = custom_memcpy(allocator, ptr, old_size);
+    custom_memcpy(new_ptr, ptr, old_size);
     custom_ahfree(allocator, heap, ptr);
 
     return new_ptr;