Fix memory leak in btr_splice_out_node().
[paraslash.git] / buffer_tree.c
index 5afa3ad3deda281415cfd172af0c13092b95ad67..44b73c946d1fc6127aba2b1e9e31c206b67ba18c 100644 (file)
@@ -771,6 +771,12 @@ void btr_drain(struct btr_node *btrn)
                btr_drop_buffer_reference(br);
 }
 
+static void btr_free_node(struct btr_node *btrn)
+{
+       free(btrn->name);
+       free(btrn);
+}
+
 /**
  * Remove a node from a buffer tree.
  *
@@ -798,8 +804,7 @@ void btr_remove_node(struct btr_node **btrnp)
        btr_drain(btrn);
        if (btrn->parent)
                list_del(&btrn->node);
-       free(btrn->name);
-       free(btrn);
+       btr_free_node(btrn);
 out:
        *btrnp = NULL;
 }
@@ -862,6 +867,7 @@ void btr_splice_out_node(struct btr_node **btrnp)
                        list_del(&ch->node);
        }
        assert(list_empty(&btrn->children));
+       btr_free_node(btrn);
        *btrnp = NULL;
 }