--- net-src/tcl/generic/tclExecute.c	2005-10-19 11:39:58.000000000 -0700
+++ src/tcl/generic/tclExecute.c	2005-10-21 15:58:30.358467100 -0700
@@ -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: tclExecute.c,v 1.217 2005/10/19 18:39:58 dgp Exp $
+ * RCS: @(#) $Id: tclExecute.c 782 2005-10-20 00:55:38Z eric.melbardis@netkitsolutions.com $
  */
 
 #include "tclInt.h"
@@ -2383,9 +2383,9 @@
 	i = TclGetInt1AtPtr(pc+1);
 	incrPtr = Tcl_NewIntObj(i);
 	pcAdjustment = 2;
+	Tcl_IncrRefCount(incrPtr);  // EPM (moved from below)
 
     doIncrStk:
-	Tcl_IncrRefCount(incrPtr);
 	if ((*pc == INST_INCR_ARRAY_STK_IMM)
 		|| (*pc == INST_INCR_ARRAY_STK)) {
 	    part2 = TclGetString(*tosPtr);
@@ -2417,9 +2417,9 @@
 	i = TclGetInt1AtPtr(pc+2);
 	incrPtr = Tcl_NewIntObj(i);
 	pcAdjustment = 3;
+	Tcl_IncrRefCount(incrPtr);  //EPM moved from below
 
     doIncrArray:
-	Tcl_IncrRefCount(incrPtr);
 	part2 = TclGetString(*tosPtr);
 	arrayPtr = &(compiledLocals[opnd]);
 	part1 = arrayPtr->name;
@@ -2540,9 +2540,9 @@
 	}
 	/* All other cases, flow through to generic handling */
 	TclNewLongObj(incrPtr, i);
+	Tcl_IncrRefCount(incrPtr);  //EPM moved frombelow
 
     doIncrScalar:
-	Tcl_IncrRefCount(incrPtr);
 	varPtr = &(compiledLocals[opnd]);
 	part1 = varPtr->name;
 	while (TclIsVarLink(varPtr)) {
