From 16f7aa77f536ccb3a36ed622f482b0a93a1e0db5 Mon Sep 17 00:00:00 2001 From: andreask Date: Wed, 8 Jun 2011 20:28:57 +0000 Subject: Reverted the fix for [Bug 3274728] committed on 2011-04-06 (rev [caf317ab68]) and replaced with one which is 64bit-safe. The existing fix crashed tclsh on Windows 64bit. --- ChangeLog | 6 ++++++ generic/tclExecute.c | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index f06295f..d7b704d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2011-06-08 Andreas Kupries + + * 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 * 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(); -- cgit v0.12