compat/setenv: do not free what we fed putenv(3).
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
4c353e890c
commit
3a2674337c
@ -16,7 +16,7 @@ int gitsetenv(const char *name, const char *value, int replace)
|
|||||||
|
|
||||||
namelen = strlen(name);
|
namelen = strlen(name);
|
||||||
valuelen = strlen(value);
|
valuelen = strlen(value);
|
||||||
envstr = malloc((namelen + valuelen + 2) * sizeof(char));
|
envstr = malloc((namelen + valuelen + 2));
|
||||||
if (!envstr) return -1;
|
if (!envstr) return -1;
|
||||||
|
|
||||||
memcpy(envstr, name, namelen);
|
memcpy(envstr, name, namelen);
|
||||||
@ -25,7 +25,11 @@ int gitsetenv(const char *name, const char *value, int replace)
|
|||||||
envstr[namelen + valuelen + 1] = 0;
|
envstr[namelen + valuelen + 1] = 0;
|
||||||
|
|
||||||
out = putenv(envstr);
|
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;
|
return out;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user