From 041393523dea5a83c16271a2e032afe215445243 Mon Sep 17 00:00:00 2001 From: Miles Bader Date: Tue, 2 Jan 1996 21:31:33 +0000 Subject: (argz_delete): If the result is empty, free it. --- libshouldbeinlibc/=argz.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'libshouldbeinlibc') diff --git a/libshouldbeinlibc/=argz.c b/libshouldbeinlibc/=argz.c index f519a434..fd90a1e2 100644 --- a/libshouldbeinlibc/=argz.c +++ b/libshouldbeinlibc/=argz.c @@ -131,9 +131,9 @@ argz_add (char **argz, unsigned *argz_len, char *str) return argz_append (argz, argz_len, str, strlen (str) + 1); } -/* Remove ENTRY from ARGZ & ARGZ_LEN, if any. */ +/* Delete ENTRY from ARGZ & ARGZ_LEN, if any. */ void -argz_remove (char **argz, unsigned *argz_len, char *entry) +argz_delete (char **argz, unsigned *argz_len, char *entry) { if (entry) /* Get rid of the old value for NAME. */ @@ -141,6 +141,11 @@ argz_remove (char **argz, unsigned *argz_len, char *entry) unsigned entry_len = strlen (entry) + 1; *argz_len -= entry_len; bcopy (entry + entry_len, entry, *argz_len - (entry - *argz)); + if (*argz_len == 0) + { + free (*argz); + *argz = 0; + } } } @@ -159,7 +164,7 @@ argz_insert (char **argz, unsigned *argz_len, char *before, char *entry) if (before < *argz || before >= *argz + *argz_len) return EINVAL; - if (before > argz) + if (before > *argz) /* Make sure before is actually the beginning of an entry. */ while (before[-1]) before--; -- cgit v1.2.3