Forum .LRN Q&A: Re: Problems with dotLRN 2.2.0 upgrade

Posted by Gustaf Neumann on

this has nothing to do with XOTcl. I am rather astonished that you think it could.

The error message is triggered from /openacs-4/packages/acs-tcl/tcl/form-processing-procs.tcl,
where the following leads to problems (simplified):

> tclsh8.5
% proc x {} {global af_to_sql(add_class_instance__active_start_date)}
bad variable name "af_to_sql(add_class_instance__active_start_date)": upvar won't create a scalar variable that looks like an array element

> tclsh8.4
% proc x {} {global af_to_sql(add_class_instance__active_start_date)}
% x

The proc "works" in tcl 8.4 but not tcl 8.5.
This means as well that you are still using tcl 8.5a* on your server.

I am not sure, what the intended semantics are, if one tries to set an **element** of an array global. At the place in the form-processing-procs, this is not necessary. Replace
"global $name" by "global af_$flag". The code is still not pretty, but at least, it should stop choking.

Please test it, i can commit the change in case it works.
However, there might be some other occurrences, where tcl 8.5 deviates from 8.4. To be on the safe side i would recommend to use tcl 8.4.13.