|
@@ -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) {
|