projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' into next
[git.git]
/
compat
/
setenv.c
diff --git
a/compat/setenv.c
b/compat/setenv.c
index
94acd2d
..
b7d7678
100644
(file)
--- 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);
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);
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);
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;
}
return out;
}