summaryrefslogtreecommitdiffstats
path: root/tests/io.test
diff options
context:
space:
mode:
authorandreas_kupries <akupries@shaw.ca>2008-12-11 17:30:18 (GMT)
committerandreas_kupries <akupries@shaw.ca>2008-12-11 17:30:18 (GMT)
commit6cb99f7bf8a960b9c8db1d06c4509fea270989b1 (patch)
tree84e713e17a14c7002afd51995234808c2c8b99db /tests/io.test
parent1e9af660c1936aa10a345ac8f0ee41f74143c698 (diff)
downloadtcl-6cb99f7bf8a960b9c8db1d06c4509fea270989b1.zip
tcl-6cb99f7bf8a960b9c8db1d06c4509fea270989b1.tar.gz
tcl-6cb99f7bf8a960b9c8db1d06c4509fea270989b1.tar.bz2
* generic/tclIO.c (SetChannelFromAny and related): Modified the
* tests/io.test: internal representation of the tclChannelType to contain not only the ChannelState pointer, but also a reference to the interpreter it was made in. Invalidate and recompute the internal representation when it is used in a different interpreter (Like cmdName intrep's). Added testcase. [Bug 2407783].
Diffstat (limited to 'tests/io.test')
-rw-r--r--tests/io.test12
1 files changed, 11 insertions, 1 deletions
diff --git a/tests/io.test b/tests/io.test
index d6ed830..9f41db0 100644
--- a/tests/io.test
+++ b/tests/io.test
@@ -13,7 +13,7 @@
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
-# RCS: @(#) $Id: io.test,v 1.91 2008/06/20 20:48:49 dgp Exp $
+# RCS: @(#) $Id: io.test,v 1.92 2008/12/11 17:30:18 andreas_kupries Exp $
if {[catch {package require tcltest 2}]} {
puts stderr "Skipping tests in [info script]. tcltest 2 required."
@@ -7695,6 +7695,16 @@ test io-73.1 {channel Tcl_Obj SetChannelFromAny} {} {
catch {close [lreplace [list a] 0 end]}
} {1}
+test io-73.2 {channel Tcl_Obj SetChannelFromAny, bug 2407783} {} {
+ # Invalidate intrep of 'channel' Tcl_Obj when transiting between interpreters.
+ interp create foo
+ set f [open [info script] r]
+ seek $f 0
+ set code [catch {interp eval foo [list seek $f 0]} msg]
+ # The string map converts the changing channel handle to a fixed string
+ list $code [string map [list $f @@] $msg]
+} {1 {can not find channel named "@@"}}
+
# ### ### ### ######### ######### #########
# cleanup