summaryrefslogtreecommitdiffstats
path: root/library/init.tcl
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2013-11-21 09:24:59 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2013-11-21 09:24:59 (GMT)
commitcb9a7e6abbfcd2e3a2613ffabf1f65518e03c403 (patch)
treed34a7e05781d7862cf2f193fe9488c59c475846a /library/init.tcl
parent6a3d5140e51ad5e33290aca9a36027e44ccabb66 (diff)
parent2254dff19ede852c343b6cc357a840917e55b112 (diff)
downloadtcl-cb9a7e6abbfcd2e3a2613ffabf1f65518e03c403.zip
tcl-cb9a7e6abbfcd2e3a2613ffabf1f65518e03c403.tar.gz
tcl-cb9a7e6abbfcd2e3a2613ffabf1f65518e03c403.tar.bz2
The only relyable way of changing environment variables to uppercase (e.g. env(ComSpec) to env(COMSPEC)) is unsetting the old one first. Long-standing bug, exposed by [219226].
Diffstat (limited to 'library/init.tcl')
-rw-r--r--library/init.tcl12
1 files changed, 4 insertions, 8 deletions
diff --git a/library/init.tcl b/library/init.tcl
index 1ca6413..f63eedf 100644
--- a/library/init.tcl
+++ b/library/init.tcl
@@ -130,9 +130,9 @@ if {(![interp issafe]) && ($tcl_platform(platform) eq "windows")} {
switch -- $u {
COMSPEC -
PATH {
- if {![info exists env($u)]} {
- set env($u) $env($p)
- }
+ set temp $env($p)
+ unset env($p)
+ set env($u) $temp
trace add variable env($p) write \
[namespace code [list EnvTraceProc $p]]
trace add variable env($u) write \
@@ -142,11 +142,7 @@ if {(![interp issafe]) && ($tcl_platform(platform) eq "windows")} {
}
}
if {![info exists env(COMSPEC)]} {
- if {$tcl_platform(os) eq "Windows NT"} {
- set env(COMSPEC) cmd.exe
- } else {
- set env(COMSPEC) command.com
- }
+ set env(COMSPEC) cmd.exe
}
}
InitWinEnv