File tree Expand file tree Collapse file tree 6 files changed +36
-1
lines changed
Expand file tree Collapse file tree 6 files changed +36
-1
lines changed Original file line number Diff line number Diff line change @@ -34,6 +34,8 @@ Modules 5.6.0 (not yet released)
3434* Doc: describe the :ref: `developer-certificate-of-origin ` process now applied
3535 on contributions.
3636* Doc: add :ref: `add-new-maintainer ` guide
37+ * Fix interpreter variable reset between multiple modulefile or modulerc
38+ evaluations when variable initial value is an invalid list. (fix issue #570)
3739
3840.. _Security policy : https://github.com/envmodules/modules/blob/main/SECURITY.md
3941.. _Modules chat room : https://matrix.to/#/#modules:matrix.org
Original file line number Diff line number Diff line change @@ -847,7 +847,8 @@ proc resetInterpState {itrp fresh dumpVarsVN dumpArrayVarsVN untrackVarsVN\
847847 } elseif {![info exists dumpArrayVars($var )]} {
848848 if {$dumpVars($var) ne [$itrp eval set ::$var ]} {
849849 reportDebug " restoring on $itrp var $var "
850- if {[llength $dumpVars($var) ] > 1} {
850+ if {[string is list $dumpVars($var) ] && [llength \
851+ $dumpVars($var) ] > 1} {
851852 # restore value as list
852853 $itrp eval set ::$var [list $dumpVars($var) ]
853854 } else {
Original file line number Diff line number Diff line change @@ -671,5 +671,12 @@ if {[info exists env(TESTSUITE_ENABLE_SITECONFIG_GETMODULEFILEFROMLOADINGMODULE)
671671 report [string length [getModulefileFromLoadingModule foo]]
672672}
673673
674+ if {[info exists env(TESTSUITE_ENABLE_SITECONFIG_EXTRA_VALNOTALIST)]} {
675+ switch -- $env(TESTSUITE_ENABLE_SITECONFIG_EXTRA_VALNOTALIST) {
676+ var {set modulefile_extra_vars [list myvar {"foo"; "bar"}]}
677+ rc_var {set modulerc_extra_vars [list myvar {"foo"; "bar"}]}
678+ }
679+ }
680+
674681
675682}
Original file line number Diff line number Diff line change @@ -47,3 +47,9 @@ if {[info exists env(TESTSUITE_ENABLE_SITECONFIG_EXTRA_REGULAR)]} {
4747 mix - override {module-version interp/1 [mycmd] $myvar}
4848 }
4949}
50+
51+ if {[info exists env(TESTSUITE_ENABLE_SITECONFIG_EXTRA_VALNOTALIST)]} {
52+ switch -- $env(TESTSUITE_ENABLE_SITECONFIG_EXTRA_VALNOTALIST) {
53+ rc_var {set myvar value}
54+ }
55+ }
Original file line number Diff line number Diff line change @@ -58,3 +58,9 @@ if {[info exists env(TESTSUITE_ENABLE_SITECONFIG_EXTRA_REGULAR)]} {
5858 }
5959 }
6060}
61+
62+ if {[info exists env(TESTSUITE_ENABLE_SITECONFIG_EXTRA_VALNOTALIST)]} {
63+ switch -- $env(TESTSUITE_ENABLE_SITECONFIG_EXTRA_VALNOTALIST) {
64+ var {set myvar value}
65+ }
66+ }
Original file line number Diff line number Diff line change @@ -125,6 +125,19 @@ if {[cmpversion $tclsh_version 8.5] > 0} {
125125unsetenv_var TESTSUITE_ENABLE_SITECONFIG_EXTRA_UNK
126126
127127
128+ # variable value not a list
129+ setenv_var TESTSUITE_ENABLE_SITECONFIG_EXTRA_VALNOTALIST rc_var
130+ set ans [list]
131+ lappend ans [list set _LMFILES_ $mp/interp/1:$mp/foo/1.0]
132+ lappend ans [list set LOADEDMODULES interp/1:foo/1.0]
133+ testouterr_cmd sh {load interp/1 foo/1.0} $ans {}
134+
135+ setenv_var TESTSUITE_ENABLE_SITECONFIG_EXTRA_VALNOTALIST var
136+ testouterr_cmd sh {load interp/1 foo/1.0} $ans {}
137+
138+ unsetenv_var TESTSUITE_ENABLE_SITECONFIG_EXTRA_VALNOTALIST
139+
140+
128141# extra cmds and vars that supersede existing cmds or variables
129142setenv_var TESTSUITE_ENABLE_SITECONFIG_EXTRA_SUPERSEDE rc_cmd
130143set tserr "interp/0\ninterp/1(myproc1:myproc2)\ninterp/2"
You can’t perform that action at this time.
0 commit comments