From 8fde7ec910e486d89ba49167d1b295a34197064c Mon Sep 17 00:00:00 2001 From: Miguel Sofer Date: Mon, 14 Jul 2008 20:29:38 +0000 Subject: * generic/tclParse.c: reverting the "fix" for [Bug 2017583], * tests/parse.test: numLevel management and TclInterpReady check seems to be necessary after all. --- ChangeLog | 6 ++++++ generic/tclParse.c | 13 ++++++++++--- tests/parse.test | 6 +++--- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 837a169..7fe38d3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-07-14 Miguel Sofer + + * generic/tclParse.c: reverting the "fix" for [Bug 2017583], + * tests/parse.test: numLevel management and TclInterpReady check + seems to be necessary after all. + 2008-07-14 Donal K. Fellows * generic/tclProc.c (TclNRApplyObjCmd, TclObjInterpProcCore): diff --git a/generic/tclParse.c b/generic/tclParse.c index 061f9eb..269978d 100644 --- a/generic/tclParse.c +++ b/generic/tclParse.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclParse.c,v 1.69 2008/07/14 02:09:30 msofer Exp $ + * RCS: @(#) $Id: tclParse.c,v 1.70 2008/07/14 20:29:40 msofer Exp $ */ #include "tclInt.h" @@ -2165,9 +2165,16 @@ TclSubstTokens( break; case TCL_TOKEN_COMMAND: { + Interp *iPtr = (Interp *) interp; + /* TIP #280: Transfer line information to nested command */ - code = TclEvalEx(interp, tokenPtr->start+1, tokenPtr->size-2, - 0, line); + iPtr->numLevels++; + code = TclInterpReady(interp); + if (code == TCL_OK) { + code = TclEvalEx(interp, tokenPtr->start+1, tokenPtr->size-2, + 0, line); + } + iPtr->numLevels--; appendObj = Tcl_GetObjResult(interp); break; } diff --git a/tests/parse.test b/tests/parse.test index e1ab8c7..2220e22 100644 --- a/tests/parse.test +++ b/tests/parse.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: parse.test,v 1.33 2008/07/14 00:38:02 msofer Exp $ +# RCS: @(#) $Id: parse.test,v 1.34 2008/07/14 20:29:41 msofer Exp $ if {[catch {package require tcltest 2.0.2}]} { puts stderr "Skipping tests in [info script]. tcltest 2.0.2 required." @@ -1025,7 +1025,7 @@ test parse-19.2 {Bug 1115904: recursion limit in Tcl_EvalEx} -constraints { interp create i load {} Tcltest i i eval {proc {} args {}} - interp recursionlimit i 1 + interp recursionlimit i 2 } -body { i eval {testevalex {[[]]}} } -cleanup { @@ -1045,7 +1045,7 @@ test parse-19.3 {Bug 1115904: recursion limit in Tcl_EvalEx} -setup { test parse-19.4 {Bug 1115904: recursion limit in Tcl_EvalEx} -setup { interp create i i eval {proc {} args {}} - interp recursionlimit i 1 + interp recursionlimit i 2 } -body { i eval {subst {[[]]}} } -cleanup { -- cgit v0.12