From: Vincent van Ravesteijn Date: Sat, 19 Nov 2011 13:52:25 GMT Subject: [PATCH 2/2] MSVC: Use _putenv instead of putenv to prevent a crash Message-ID: <1321710745-2341-1-git-send-email-vfr@lyx.org> In-Reply-To: <1321710345-2299-1-git-send-email-vfr@lyx.org> 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 --- 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