Index: openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl,v diff -u -r1.4 -r1.5 --- openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl 19 Jan 2002 23:45:46 -0000 1.4 +++ openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl 9 Feb 2002 02:33:35 -0000 1.5 @@ -799,10 +799,11 @@ The value is an array and should be exported in a way compliant with the :array flag of ad_page_contract, which means that each entry will get output as name.key=value. - If you need to specify a value for an array directly, it should be in array get format. +

If you don't specify a value directly, but want it pulled out of the Tcl environment, then you don't need to specify :array. If you do, and the variable is in fact not an array, an error will be thrown. +

sign
@@ -945,7 +946,15 @@ } } if { [info exists exp_flag($name:sign)] } { - ns_set put $export_set "$name:sig" [ad_sign $exp_value($name)] + + # DRB: array get does not define the order in which elements are returned, + # meaning that arrays constructed in different ways can have different + # signatures unless we sort the returned list. I ran into this the + # very first time I tried to sign an array passed to a page that used + # ad_page_contract to verify the veracity of the parameter. + + ns_set put $export_set "$name:sig" [ad_sign [lsort $exp_value($name)]] + } } else { if { [info exists exp_flag($name:multiple)] } {