diff --git a/src/server/cache-node.c b/src/server/cache-node.c index bef71a0cca4de70ddfe8be57db30db44609f09d4..93e6e6e4d5905ae60c29a4430a7f609e90637bae 100644 --- a/src/server/cache-node.c +++ b/src/server/cache-node.c @@ -182,3 +182,27 @@ set_mru(Cache_node_mcb *mcb, unlink_lru(node, &mcb->lru, &mcb->mru); insert_mru(node, &mcb->lru, &mcb->mru); } +static void +free_cache_node_block (Cache_node_block *block) +{ + sfree(block->nodes); + sfree(block); +} + +extern void +free_cache_node_mcb(Cache_node_mcb *control) +{ + Cache_node_block *block; + + while ( control->last_block != NULL ) + { + block = control->last_block; + control->last_block = block->link; + free_cache_node_block (block); + } + + sfree(control->lookup_table); + sfree(control); +} + +