diff options
author | dgp <dgp@users.sourceforge.net> | 2016-07-11 21:56:32 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2016-07-11 21:56:32 (GMT) |
commit | 59ded443ac132275413b2e6f6e9cb4eb6cba468b (patch) | |
tree | c705d43e1582e5709cbf4a4c93c8790a2a58ea15 | |
parent | d6146b2e552c294199df0354470b89fe955a7345 (diff) | |
download | tcl-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.c | 7 | ||||
-rw-r--r-- | tests/namespace.test | 7 |
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 { |