diff --git a/src/rbtree.c b/src/rbtree.c
index e34c36919986fa55a0da9a577c82110051f16693..8f6e06e70b4fa0eedf05529d66c52484029e0f33 100644
--- a/src/rbtree.c
+++ b/src/rbtree.c
@@ -88,6 +88,11 @@ void rbstack_low_free (struct rbstack_ptr *rbstack)
   rbstack->ssp = 0;
 }
 
+void rbstack_do_free (struct rbstack_ptr *rbstack_ptr)
+{
+  RBSTACK_FREE (*rbstack_ptr);
+}
+
 /* Inserts the given node at *pos and advances *pos. *top is the top
  * of the stack, which also is advanced to keep track of the top. */
 void rbstack_insert (struct rbstack_ptr *top, struct rbstack_ptr *pos,
diff --git a/src/rbtree_low.h b/src/rbtree_low.h
index 5ad43cf3958a82fb8e5aa2c3bc6f3a831951b0ee..626d0468e498a7f0d977d2416e0510545a753d57 100644
--- a/src/rbtree_low.h
+++ b/src/rbtree_low.h
@@ -46,6 +46,7 @@ void rbstack_low_pop (struct rbstack_ptr *rbstack);
 void rbstack_low_up (struct rbstack_ptr *rbstack);
 void rbstack_low_up_to_root (struct rbstack_ptr *rbstack);
 void rbstack_low_free (struct rbstack_ptr *rbstack);
+void rbstack_do_free (struct rbstack_ptr *rbstack);
 void rbstack_insert (struct rbstack_ptr *top, struct rbstack_ptr *pos,
 		     struct rb_node_hdr *node);
 void rbstack_assign (struct rbstack_ptr *target, struct rbstack_ptr *source);