diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | generic/tclExecute.c | 6 |
2 files changed, 9 insertions, 3 deletions
@@ -1,3 +1,9 @@ +2011-06-08 Andreas Kupries <andreask@activestate.com> + + * generic/tclExecute.c: Reverted the fix for [Bug 3274728] + committed on 2011-04-06 and replaced with one which is + 64bit-safe. The existing fix crashed tclsh on Windows 64bit. + 2011-06-08 Donal K. Fellows <dkf@users.sf.net> * tests/fileSystem.test: Reduce the amount of use of duplication of diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 4fe65d7..84b0b63 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -172,7 +172,7 @@ typedef struct TEBCdata { ByteCode *codePtr; /* Constant until the BC returns */ /* -----------------------------------------*/ const unsigned char *pc; /* These fields are used on return TO this */ - unsigned long *catchTop; /* this level: they record the state when a */ + ptrdiff_t *catchTop; /* this level: they record the state when a */ int cleanup; /* new codePtr was received for NR */ Tcl_Obj *auxObjList; /* execution. */ int checkInterp; @@ -1917,7 +1917,7 @@ TclIncrObj( *---------------------------------------------------------------------- */ #define bcFramePtr (&TD->cmdFrame) -#define initCatchTop ((unsigned long *) (&TD->stack[-1])) +#define initCatchTop ((ptrdiff_t *) (&TD->stack[-1])) #define initTosPtr ((Tcl_Obj **) (initCatchTop+codePtr->maxExceptDepth)) #define esPtr (iPtr->execEnvPtr->execStackPtr) @@ -6265,7 +6265,7 @@ TEBCresume( while (auxObjList) { if ((catchTop != initCatchTop) && - (*catchTop>auxObjList->internalRep.ptrAndLongRep.value)) { + (*catchTop > ((ptrdiff_t) auxObjList->internalRep.ptrAndLongRep.value))) { break; } POP_TAUX_OBJ(); |