aboutsummaryrefslogtreecommitdiff
path: root/pdlib.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'pdlib.tcl')
-rw-r--r--pdlib.tcl10
1 files changed, 9 insertions, 1 deletions
diff --git a/pdlib.tcl b/pdlib.tcl
index 2f97b03..a854e04 100644
--- a/pdlib.tcl
+++ b/pdlib.tcl
@@ -152,8 +152,16 @@ namespace eval ::pd {
}
proc arg {n {assertion any}} {
- set v [uplevel 1 "lindex \$args $n"]
+ upvar 1 args up_args
+ set up_args_len [llength $up_args]
+ if {$n < 0 || $n >= $up_args_len} {
+ return -code error "fatal: argument $n out of range"
+ }
+ set v [lindex $up_args $n]
set i 0
+ if {[llength $v] != 2} {
+ return -code error "fatal: malformed atom: $v (full args: $up_args)"
+ }
foreach {selector value} $v {break}
if {$assertion == {int}} {
set assertion {float}