--- tcl/tclProc.c.orig	Fri Feb 24 16:19:56 1995
+++ tcl/tclProc.c	Sun Jan 16 01:53:10 2000
@@ -793,11 +793,13 @@
      */
 
     procDone:
-    for (argPtr = frame.varPtr; argPtr != NULL; argPtr = argPtr->nextPtr) {
+    for (argPtr = frame.varPtr; argPtr != NULL;) {
+	void *tmp = argPtr;
 	if (argPtr->flags & VAR_DYNAMIC) {
 	    free(argPtr->value);
 	}
-	free((char *) argPtr);
+        argPtr = argPtr->nextPtr;
+	free(tmp);
     }
     iPtr->framePtr = frame.callerPtr;
     iPtr->varFramePtr = frame.callerVarPtr;
