summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2021-07-17 11:16:11 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2021-07-17 11:16:11 (GMT)
commit04619d69b837a5ee175520c9e3643ea7c6e879e1 (patch)
treee1dc3926bec7e0bcdde9ad8fe45e04f620fa1e4a
parentf58326fab5907a37c419f42ee5a343063b0ba944 (diff)
parent9804d03e1f54e94309bb611d87cb783afcbc9ed9 (diff)
downloadtcl-04619d69b837a5ee175520c9e3643ea7c6e879e1.zip
tcl-04619d69b837a5ee175520c9e3643ea7c6e879e1.tar.gz
tcl-04619d69b837a5ee175520c9e3643ea7c6e879e1.tar.bz2
Fix [592a25a505]: Tcl_PutEnv() crashes on Windows
-rw-r--r--generic/tclEnv.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/generic/tclEnv.c b/generic/tclEnv.c
index e4246a1..2788c7e 100644
--- a/generic/tclEnv.c
+++ b/generic/tclEnv.c
@@ -420,6 +420,16 @@ Tcl_PutEnv(
if ((value != NULL) && (value != name)) {
value[0] = '\0';
+#if defined(_WIN32)
+ if (tenviron == NULL) {
+ /*
+ * When we are started from main(), the _wenviron array could
+ * be NULL and will be initialized by the first _wgetenv() call.
+ */
+
+ (void) _wgetenv(L"WINDIR");
+ }
+#endif
TclSetEnv(name, value+1);
}
TclEnvEpoch++;