Index: openacs-4/packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl,v diff -u -r1.66.2.24 -r1.66.2.25 --- openacs-4/packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl 29 Jul 2021 15:58:44 -0000 1.66.2.24 +++ openacs-4/packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl 12 Jul 2022 15:15:02 -0000 1.66.2.25 @@ -1128,7 +1128,7 @@ @param object_id the target, it is the first arg to the method @param args the remaining arguments } { - return [ad_apply ${method_name}__[util_memoize [list acs_object_type $object_id]] [concat $object_id $args]] + return [${method_name}__[util_memoize [list acs_object_type $object_id]] $object_id {*}$args] } ad_proc -deprecated ad_dispatch { Index: openacs-4/packages/acs-service-contract/tcl/acs-service-contract-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-service-contract/tcl/acs-service-contract-procs.tcl,v diff -u -r1.33.2.4 -r1.33.2.5 --- openacs-4/packages/acs-service-contract/tcl/acs-service-contract-procs.tcl 28 Oct 2020 15:39:19 -0000 1.33.2.4 +++ openacs-4/packages/acs-service-contract/tcl/acs-service-contract-procs.tcl 12 Jul 2022 15:15:02 -0000 1.33.2.5 @@ -58,7 +58,7 @@ set proc_name [acs_sc_generate_name $contract $impl $operation] if { [namespace which $proc_name] ne "" } { - return [ad_apply $proc_name $call_args] + return [$proc_name {*}$call_args] } if { $error_p } { 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.189.2.129 -r1.189.2.130 --- openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl 6 Jul 2022 15:44:23 -0000 1.189.2.129 +++ openacs-4/packages/acs-tcl/tcl/utilities-procs.tcl 12 Jul 2022 15:15:01 -0000 1.189.2.130 @@ -1259,9 +1259,14 @@ } } -ad_proc -public ad_apply {func arglist} { +ad_proc -deprecated ad_apply {func arglist} { Evaluates the first argument with ARGLIST as its arguments, in the environment of its caller. Analogous to the Lisp function of the same name. + + DEPRECATED: modern Tcl can achieve the same result simply by + expanding a list as arguments of a command. + + @see {*} } { set func_and_args [concat $func $arglist] return [uplevel $func_and_args] @@ -1279,7 +1284,7 @@ return -code error "Unsafe argument to ad_safe_eval: $arg" } } - return [ad_apply uplevel $args] + return [uplevel {*}$args] } ad_proc -public ad_decode { value args } { Index: openacs-4/packages/rss-support/tcl/rss-generation-service-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/rss-support/tcl/rss-generation-service-procs.tcl,v diff -u -r1.22.2.7 -r1.22.2.8 --- openacs-4/packages/rss-support/tcl/rss-generation-service-procs.tcl 21 Oct 2021 12:07:20 -0000 1.22.2.7 +++ openacs-4/packages/rss-support/tcl/rss-generation-service-procs.tcl 12 Jul 2022 15:15:01 -0000 1.22.2.8 @@ -70,7 +70,7 @@ set $name $val } } - set xml [ad_apply rss_gen $args] + set xml [rss_gen {*}$args] # Write report. set report_file [rss_gen_report_file \ Index: openacs-4/packages/rss-support/www/subscr-ae.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/rss-support/www/subscr-ae.tcl,v diff -u -r1.10 -r1.10.2.1 --- openacs-4/packages/rss-support/www/subscr-ae.tcl 21 Jan 2018 00:38:38 -0000 1.10 +++ openacs-4/packages/rss-support/www/subscr-ae.tcl 12 Jul 2022 15:15:01 -0000 1.10.2.1 @@ -9,10 +9,9 @@ we pull out channel title and link. It would be very tempting to accept impl_name as an argument - instead of impl_id. However, the "ad_apply" call in acs_sc::invoke - raises the ugly possibility of code-smuggling through the url, - so we will force the use of the easily validated impl_id - instead. + instead of impl_id. However, the expanded call in acs_sc::invoke + raises the ugly possibility of code-smuggling through the url, so + we will force the use of the easily validated impl_id instead. } { subscr_id:optional,naturalnum