diff options
Diffstat (limited to 'generic/tclProc.c')
-rw-r--r-- | generic/tclProc.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/generic/tclProc.c b/generic/tclProc.c index 5253e21..8cd8aa1 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.124 2007/06/18 22:51:12 msofer Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.125 2007/06/20 18:46:14 dgp Exp $ */ #include "tclInt.h" @@ -270,7 +270,7 @@ Tcl_ProcObjCmd( Tcl_DecrRefCount(contextPtr->data.eval.path); contextPtr->data.eval.path = NULL; } - TclStackFree(interp); /* contextPtr */ + TclStackFree(interp, contextPtr); } /* @@ -1222,7 +1222,7 @@ InitArgsAndLocals( for (i=0 ; i<=numArgs ; i++) { Tcl_DecrRefCount(desiredObjs[i]); } - TclStackFree(interp); + TclStackFree(interp, desiredObjs); return TCL_ERROR; } @@ -1565,6 +1565,7 @@ TclObjInterpProcCore( { register Proc *procPtr = ((Interp *)interp)->varFramePtr->procPtr; int result; + CallFrame *freePtr; result = InitArgsAndLocals(interp, procNameObj, skip); if (result != TCL_OK) { @@ -1680,9 +1681,11 @@ TclObjInterpProcCore( * allocated later on the stack. */ + freePtr = ((Interp *)interp)->framePtr; Tcl_PopCallFrame(interp); /* Pop but do not free. */ - TclStackFree(interp); /* Free compiledLocals. */ - TclStackFree(interp); /* Free CallFrame. */ + TclStackFree(interp, freePtr->compiledLocals); + /* Free compiledLocals. */ + TclStackFree(interp, freePtr); /* Free CallFrame. */ return result; } @@ -2401,7 +2404,7 @@ SetLambdaFromAny( Tcl_DecrRefCount(contextPtr->data.eval.path); } - TclStackFree(interp); /* contextPtr */ + TclStackFree(interp, contextPtr); } /* |