summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2016-07-11 21:56:32 (GMT)
committerdgp <dgp@users.sourceforge.net>2016-07-11 21:56:32 (GMT)
commit59ded443ac132275413b2e6f6e9cb4eb6cba468b (patch)
treec705d43e1582e5709cbf4a4c93c8790a2a58ea15
parentd6146b2e552c294199df0354470b89fe955a7345 (diff)
downloadtcl-59ded443ac132275413b2e6f6e9cb4eb6cba468b.zip
tcl-59ded443ac132275413b2e6f6e9cb4eb6cba468b.tar.gz
tcl-59ded443ac132275413b2e6f6e9cb4eb6cba468b.tar.bz2
[cea0344a1] Restore a clearing of the ensemble rewrite in one execution path
so attempts to use the data after free are not made. Test namespace-50.9 demonstrates the need for this.
-rw-r--r--generic/tclExecute.c7
-rw-r--r--tests/namespace.test7
2 files changed, 14 insertions, 0 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index c0cbd9e..e539161 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -2078,6 +2078,13 @@ TclNRExecuteByteCode(
#endif
/*
+ * Test namespace-50.9 demonstrates the need for this call.
+ * Use a --enable-symbols=mem bug to see.
+ */
+
+ TclResetRewriteEnsemble(interp, 1);
+
+ /*
* Push the callback for bytecode execution
*/
diff --git a/tests/namespace.test b/tests/namespace.test
index 575695f..55505f1 100644
--- a/tests/namespace.test
+++ b/tests/namespace.test
@@ -2356,6 +2356,13 @@ test namespace-50.8 {[f961d7d1dd]} -setup {
rename e {}
rename target {}
}
+test namespace-50.9 {[cea0344a51]} -body {
+ namespace eval foo {
+ namespace eval bar {
+ namespace delete foo
+ }
+ }
+} -returnCodes error -result {unknown namespace "foo" in namespace delete command}
test namespace-51.1 {name resolution path control} -body {
namespace eval ::test_ns_1 {