From 439bc3acd3309099216e8c997887dae321cd09c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Janouch?= Date: Fri, 26 Jun 2015 22:20:37 +0200 Subject: Add str_vector_steal() --- liberty.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'liberty.c') diff --git a/liberty.c b/liberty.c index 8ea860f..1ae9df4 100644 --- a/liberty.c +++ b/liberty.c @@ -401,13 +401,20 @@ str_vector_add_vector (struct str_vector *self, char **vector) str_vector_add (self, *vector++); } -static void -str_vector_remove (struct str_vector *self, size_t i) +static char * +str_vector_steal (struct str_vector *self, size_t i) { hard_assert (i < self->len); - free (self->vector[i]); + char *tmp = self->vector[i]; memmove (self->vector + i, self->vector + i + 1, (self->len-- - i) * sizeof *self->vector); + return tmp; +} + +static void +str_vector_remove (struct str_vector *self, size_t i) +{ + free (str_vector_steal (self, i)); } // --- Dynamically allocated strings ------------------------------------------- -- cgit v1.2.3