Browse Source

small refactoring on bitmap_free() and realloc()

Ioannis Koutras 12 years ago
parent
commit
4b548df59e
2 changed files with 9 additions and 10 deletions
  1. 4 6
      src/bitmap/bitmap_free.c
  2. 5 4
      src/realloc.c

+ 4 - 6
src/bitmap/bitmap_free.c

@@ -39,21 +39,19 @@
  * @param ptr       The pointer of the memory block to be freed.
  */
 void bitmap_free(bitmap_rb_t *raw_block, void *ptr) {
+    BMAP_EL_TYPE *bmap_p;
     chunk_header_t *chunk_header;
     size_t cells_used, cell_no; 
-    BMAP_EL_TYPE *bmap_p;
 
+    bmap_p = (BMAP_EL_TYPE *)((uintptr_t) raw_block + sizeof(bitmap_rb_t));
     chunk_header = (chunk_header_t *)((char *)ptr - CHUNK_HDR_SIZE);
 
     cells_used = chunk_header->num_of_cells;
 
-    cell_no = (size_t) ((char *)chunk_header -
-            ((char *)raw_block + sizeof(bitmap_rb_t) + 
-             raw_block->elements * BMAP_EL_SIZE))
+    cell_no = (size_t) ((uintptr_t) chunk_header - (uintptr_t) bmap_p -
+            raw_block->elements * BMAP_EL_SIZE)
         / raw_block->bytes_per_cell;
 
-    bmap_p = (BMAP_EL_TYPE *)((char *)raw_block + sizeof(bitmap_rb_t));
-
     size_t mask_counter = cells_used;
     size_t mask_start = cell_no % BMAP_EL_SIZE_BITS + 1;
     size_t vector_index = cell_no / BMAP_EL_SIZE_BITS;

+ 5 - 4
src/realloc.c

@@ -117,8 +117,11 @@ void * realloc(void *ptr, size_t size) {
 
             } else {
 
-                memcpy((void *)((uintptr_t) new_block +
-                            sizeof(raw_block_header_t)), ptr,
+                return_ptr = (void *)
+                    ((uintptr_t) new_block + sizeof(raw_block_header_t));
+
+                memcpy(return_ptr,
+                        ptr,
                         owner_raw_block->size - sizeof(raw_block_header_t));
 
 #ifdef WITH_DEBUG
@@ -148,8 +151,6 @@ void * realloc(void *ptr, size_t size) {
                 unlock_global();
 #endif /* WITH_ALLOCATOR_STATS */
 
-                return_ptr = (void *)
-                    ((uintptr_t) new_block + sizeof(raw_block_header_t));
                 goto done;
             }
         }