aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--liberty.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/liberty.c b/liberty.c
index c3c5cf9..ad1efba 100644
--- a/liberty.c
+++ b/liberty.c
@@ -872,6 +872,20 @@ str_map_find (struct str_map *self, const char *key)
return str_map_find_real (self, tmp);
}
+static void *
+str_map_steal (struct str_map *self, const char *key)
+{
+ void *value = str_map_find (self, key);
+ if (value)
+ {
+ str_map_free_fn free_saved = self->free;
+ self->free = NULL;
+ str_map_set (self, key, NULL);
+ self->free = free_saved;
+ }
+ return value;
+}
+
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// This iterator is intended for accessing and eventually adding links.