Add built-in debug malloc wrapper.
[srvx.git] / src / dict-splay.c
index 42bb9025778342b5107b190ee4f70cc0ac04b55c..4619ce562dc7ea516b5c4bc6fbe1705487818755 100644 (file)
@@ -123,10 +123,18 @@ dict_splay(struct dict_node *node, const char *key)
 static void
 dict_dispose_node(struct dict_node *node, free_f free_keys, free_f free_data)
 {
-    if (free_keys && node->key)
-        free_keys((void*)node->key);
-    if (free_data && node->data)
-        free_data(node->data);
+    if (free_keys && node->key) {
+        if (free_keys == free)
+            free((void*)node->key);
+        else
+            free_keys((void*)node->key);
+    }
+    if (free_data && node->data) {
+        if (free_data == free)
+            free(node->data);
+        else
+            free_data(node->data);
+    }
     free(node);
 }