diff options
author | Jon Loeliger <jdl@jdl.com> | 2006-09-27 11:16:10 -0500 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-09-27 18:00:53 -0700 |
commit | eb30aed7c69190fd648947d54bbb9ebe53c67715 (patch) | |
tree | 0301c0ce863a89a9878a169504ce2240491cc1df /interpolate.c | |
parent | dd4676299dde0a4c6f8a471e6353170f86a78c8a (diff) | |
download | git-eb30aed7c69190fd648947d54bbb9ebe53c67715.tar.gz |
Removed memory leaks from interpolation table uses.
Clarified that parse_extra_args()s results in interpolation
table entries. Removed a few trailing whitespace occurrences.
Signed-off-by: Jon Loeliger <jdl@jdl.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'interpolate.c')
-rw-r--r-- | interpolate.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/interpolate.c b/interpolate.c index 4570c123dc..62701d8435 100644 --- a/interpolate.c +++ b/interpolate.c @@ -4,9 +4,35 @@ #include <string.h> +#include "git-compat-util.h" #include "interpolate.h" +void interp_set_entry(struct interp *table, int slot, char *value) +{ + char *oldval = table[slot].value; + char *newval = value; + + if (oldval) + free(oldval); + + if (value) + newval = xstrdup(value); + + table[slot].value = newval; +} + + +void interp_clear_table(struct interp *table, int ninterps) +{ + int i; + + for (i = 0; i < ninterps; i++) { + interp_set_entry(table, i, NULL); + } +} + + /* * Convert a NUL-terminated string in buffer orig * into the supplied buffer, result, whose length is reslen, |