[PATCH 2/2] MSVC: Use _putenv instead of putenv to prevent a crash
- From
Vincent van Ravesteijn <vfr@lyx.org>
- Date
- Nov 19, 2011, 13:52 UTC
- 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 <vfr@lyx.org> --- 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