summaryrefslogtreecommitdiffstats
path: root/generic/tclProc.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclProc.c')
-rw-r--r--generic/tclProc.c15
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);
}
/*