Browse Source

Fixed remove_block() in a way similar to push_block()

Ioannis Koutras 13 years ago
parent
commit
9b6010c6cd
2 changed files with 14 additions and 14 deletions
  1. 3 3
      private-include/linked_lists/linked_lists.h
  2. 11 11
      src/linked_lists/linked_lists.c

+ 3 - 3
private-include/linked_lists/linked_lists.h

@@ -102,9 +102,9 @@ void push_block(void **block, void **starting_node);
 /**
  * Removes a memory block from a linked list of memory blocks.
  *
- * \param *block The block to be removed.
- * \param *starting_node The starting memory block of the list.
+ * \param **block A pointer to the block to be removed.
+ * \param **starting_node A pointer to the starting memory block of the list.
  */
-void remove_block(void *block, void *starting_node);
+void remove_block(void **block, void **starting_node);
 
 #endif /* LINKED_LISTS_H */

+ 11 - 11
src/linked_lists/linked_lists.c

@@ -55,18 +55,18 @@ void push_block(void **block, void **starting_node) {
 }
 
 #ifdef BLOCKS_IN_SLL
-void remove_block(void *block, void *starting_node) {
+void remove_block(void **block, void **starting_node) {
 
     void *current_node, *previous_node;
 
     /* Traverse a list starting from the starting node until block is found. */
-    for(current_node = starting_node; current_node != NULL; 
+    for(current_node = *starting_node; current_node != NULL; 
             current_node = get_next(current_node)) {
-        if(current_node == block) {
-            if(current_node == starting_node) {
-                starting_node = get_next(block);
+        if(current_node == *block) {
+            if(current_node == *starting_node) {
+                *starting_node = get_next(*block);
             } else {
-                set_next(previous_node, get_next(block));
+                set_next(previous_node, get_next(*block));
             }
             break;
         }
@@ -76,18 +76,18 @@ void remove_block(void *block, void *starting_node) {
 #endif
 
 #ifdef BLOCKS_IN_DLL
-void remove_block(void *block, void *starting_node) {
+void remove_block(void **block, void **starting_node) {
     void *previous_block, *next_block;
 
     /* No need to traverse the list, just check if the block is the starting
      * node of the list.
      */
 
-    previous_block = get_previous(block);
-    next_block = get_next(block);
+    previous_block = get_previous(*block);
+    next_block = get_next(*block);
 
-    if(block == starting_node) {
-        starting_node = previous_block;
+    if(*block == *starting_node) {
+        *starting_node = previous_block;
     }
 
     if(previous_block != NULL) {