diff options
author | dgp <dgp@users.sourceforge.net> | 2016-06-28 22:49:22 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2016-06-28 22:49:22 (GMT) |
commit | d2629fb2726fa18af638288c9c9aa89369b9fade (patch) | |
tree | 5a668f6c4e6abf7a07037bf9a931592971a77f11 /generic/tclOO.c | |
parent | 2880e7da55a9d5ff7d8ba8fed48743f0e15733a4 (diff) | |
parent | edc450c53752cf92b00a45883fee2d66a2bde27c (diff) | |
download | tcl-d2629fb2726fa18af638288c9c9aa89369b9fade.zip tcl-d2629fb2726fa18af638288c9c9aa89369b9fade.tar.gz tcl-d2629fb2726fa18af638288c9c9aa89369b9fade.tar.bz2 |
merge 8.6
Diffstat (limited to 'generic/tclOO.c')
-rw-r--r-- | generic/tclOO.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/generic/tclOO.c b/generic/tclOO.c index 9df5029..0454bfe 100644 --- a/generic/tclOO.c +++ b/generic/tclOO.c @@ -1687,7 +1687,7 @@ Tcl_NewObjectInstance( TclOOGetCallContext(oPtr, NULL, CONSTRUCTOR, NULL); if (contextPtr != NULL) { - int result; + int isRoot, result; Tcl_InterpState state; state = Tcl_SaveInterpState(interp, TCL_OK); @@ -1698,13 +1698,14 @@ Tcl_NewObjectInstance( * Adjust the ensmble tracking record if necessary. [Bug 3514761] */ - if (((Interp*) interp)->ensembleRewrite.sourceObjs) { - ((Interp*) interp)->ensembleRewrite.numInsertedObjs += skip-1; - ((Interp*) interp)->ensembleRewrite.numRemovedObjs += skip-1; - } + isRoot = TclInitRewriteEnsemble(interp, skip, skip, objv); result = Tcl_NRCallObjProc(interp, TclOOInvokeContext, contextPtr, objc, objv); + if (isRoot) { + TclResetRewriteEnsemble(interp, 1); + } + /* * It's an error if the object was whacked in the constructor. * Force this if it isn't already an error (don't want to lose @@ -1827,9 +1828,8 @@ TclNRNewObjectInstance( * Adjust the ensmble tracking record if necessary. [Bug 3514761] */ - if (((Interp *) interp)->ensembleRewrite.sourceObjs) { - ((Interp *) interp)->ensembleRewrite.numInsertedObjs += skip - 1; - ((Interp *) interp)->ensembleRewrite.numRemovedObjs += skip - 1; + if (TclInitRewriteEnsemble(interp, skip, skip, objv)) { + TclNRAddCallback(interp, TclClearRootEnsemble, NULL, NULL, NULL, NULL); } /* |