Git crashes when trying to clear a nonexistent environment variable using the putenv function. The crash occurs when freeing the option string. In debug mode the assert "CrtIsValidHeapPointer" fails. Using _putenv instead of putenv makes the crash and assert disappear. Signed-off-by: Vincent van Ravesteijn <vfr@xxxxxxx> --- The strange thing is that all over the internet people are claiming that there is no difference between putenv and _putenv. Still, using _putenv fixes the crash for me. If there is someone around who is more knowledgeable in this area, please comment. compat/setenv.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/compat/setenv.c b/compat/setenv.c index 3a22ea7..b23937d 100644 --- a/compat/setenv.c +++ b/compat/setenv.c @@ -23,7 +23,7 @@ int gitsetenv(const char *name, const char *value, int replace) memcpy(envstr + namelen + 1, value, valuelen); 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 -- 1.7.4.1 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html