diff options
author | dgp <dgp@users.sourceforge.net> | 2011-07-14 03:19:31 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2011-07-14 03:19:31 (GMT) |
commit | 3cf6b18da0609dee847149b261634a77b34f502e (patch) | |
tree | 8f24f27b6d653067271e863581cc67ed6dd18f94 | |
parent | 02ef1632d034f070d79c64264efa65fce9fc5af7 (diff) | |
parent | aa1a72b31337d3fa30a90286eac8374c296691be (diff) | |
download | tcl-3cf6b18da0609dee847149b261634a77b34f502e.zip tcl-3cf6b18da0609dee847149b261634a77b34f502e.tar.gz tcl-3cf6b18da0609dee847149b261634a77b34f502e.tar.bz2 |
3366265 Allocate proper size buffer for TclConvertElement() to write to.
-rw-r--r-- | generic/tclIndexObj.c | 6 | ||||
-rw-r--r-- | tests/proc.test | 5 |
2 files changed, 9 insertions, 2 deletions
diff --git a/generic/tclIndexObj.c b/generic/tclIndexObj.c index 5b367d6..76c2dea 100644 --- a/generic/tclIndexObj.c +++ b/generic/tclIndexObj.c @@ -954,7 +954,8 @@ Tcl_WrongNumArgs( len = TclScanElement(elementStr, elemLen, &flags); if (MAY_QUOTE_WORD && len != elemLen) { - char *quotedElementStr = TclStackAlloc(interp, (unsigned)len); + char *quotedElementStr = TclStackAlloc(interp, + (unsigned)len + 1); len = TclConvertElement(elementStr, elemLen, quotedElementStr, flags); @@ -1009,7 +1010,8 @@ Tcl_WrongNumArgs( len = TclScanElement(elementStr, elemLen, &flags); if (MAY_QUOTE_WORD && len != elemLen) { - char *quotedElementStr = TclStackAlloc(interp,(unsigned) len); + char *quotedElementStr = TclStackAlloc(interp, + (unsigned) len + 1); len = TclConvertElement(elementStr, elemLen, quotedElementStr, flags); diff --git a/tests/proc.test b/tests/proc.test index c28e881..ed3c4b6 100644 --- a/tests/proc.test +++ b/tests/proc.test @@ -187,6 +187,11 @@ test proc-3.6 {TclObjInterpProc, proper quoting of proc name, Bug 942757} -body {a b c} } -returnCodes error -result {wrong # args: should be "{a b c} x"} +test proc-3.7 {TclObjInterpProc, wrong num args, Bug 3366265} { + proc {} {x} {} + list [catch {{}} msg] $msg +} {1 {wrong # args: should be "{} x"}} + catch {namespace delete {*}[namespace children :: test_ns_*]} catch {rename p ""} catch {rename {} ""} |