diff options
author | Junio C Hamano <junkio@cox.net> | 2005-12-05 01:41:35 +0300 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-12-05 01:41:35 +0300 |
commit | 3a2674337c12e958f8c697af991a0ef6c06ddd4d (patch) | |
tree | 0450d246ff8f28061411e823fa4660f99e7b91f1 | |
parent | 4c353e890c0107a8e733ab11634da21844ec38ba (diff) |
compat/setenv: do not free what we fed putenv(3).
Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r-- | compat/setenv.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/compat/setenv.c b/compat/setenv.c index 94acd2da9e..b7d7678598 100644 --- a/compat/setenv.c +++ b/compat/setenv.c @@ -16,7 +16,7 @@ int gitsetenv(const char *name, const char *value, int replace) namelen = strlen(name); valuelen = strlen(value); - envstr = malloc((namelen + valuelen + 2) * sizeof(char)); + envstr = malloc((namelen + valuelen + 2)); if (!envstr) return -1; memcpy(envstr, name, namelen); @@ -25,7 +25,11 @@ int gitsetenv(const char *name, const char *value, int replace) envstr[namelen + valuelen + 1] = 0; out = putenv(envstr); + /* putenv(3) makes the argument string part of the environment, + * and changing that string modifies the environment --- which + * means we do not own that storage anymore. Do not free + * envstr. + */ - free(envstr); return out; } |