diff --git a/src/stralloc.c b/src/stralloc.c
index ee04da58a755b9659c848b549a4a4bcf1259951c..ac7b4f12102bea59f974dc6254c69dcfe1a2d401 100644
--- a/src/stralloc.c
+++ b/src/stralloc.c
@@ -272,13 +272,18 @@ int my_strcmp(struct pike_string *a,struct pike_string *b)
   return low_binary_strcmp(a->str,a->len,b->str,b->len);
 }
 
-void really_free_string(struct pike_string *s)
+void unlink_pike_string(struct pike_string *s)
 {
   int h;
 
   h=StrHash(s->str,s->len);
   propagate_shared_string(s,h);
   base_table[h]=s->next;
+}
+
+void really_free_string(struct pike_string *s)
+{
+  unlink_pike_string(s);
   free((char *)s);
 }