diff options
author | dgp <dgp@users.sourceforge.net> | 2016-05-06 16:03:15 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2016-05-06 16:03:15 (GMT) |
commit | b87ec263c780440f2e79ab29f3dea7a4bf02ba1d (patch) | |
tree | 697e3bc003c0d5b5ba5962d5bf63c90957d5f036 | |
parent | a1f0c2b5d2b3cfff326458d9a6f5f40168c01eb3 (diff) | |
download | tcl-b87ec263c780440f2e79ab29f3dea7a4bf02ba1d.zip tcl-b87ec263c780440f2e79ab29f3dea7a4bf02ba1d.tar.gz tcl-b87ec263c780440f2e79ab29f3dea7a4bf02ba1d.tar.bz2 |
Bug fix. Have to arrange to only close a catch once. After the spacebug_3154ea2759
has been returned to placeholder values, closing with them as data leads
to memory corruption.
There's probably a better fix available because the error here feels like
it's rooted somewhere else, having us continue to check values we ought to
know have already been closed.
-rw-r--r-- | generic/tclAssembly.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/generic/tclAssembly.c b/generic/tclAssembly.c index 6d5676b..d02721d 100644 --- a/generic/tclAssembly.c +++ b/generic/tclAssembly.c @@ -3984,6 +3984,9 @@ UnstackExpiredCatches( while (catchDepth > bbPtr->catchDepth) { --catchDepth; + if (catches[catchDepth] == NULL) { + continue; + } range = envPtr->exceptArrayPtr + catchIndices[catchDepth]; range->numCodeBytes = bbPtr->startOffset - range->codeOffset; catches[catchDepth] = NULL; |