summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandreask <andreask>2011-06-08 20:28:57 (GMT)
committerandreask <andreask>2011-06-08 20:28:57 (GMT)
commit16f7aa77f536ccb3a36ed622f482b0a93a1e0db5 (patch)
tree241f0287fbd24352a50e31dc34860524b03378c7
parent58ce780c3e7059e66583a33e596969adf9ba7086 (diff)
downloadtcl-16f7aa77f536ccb3a36ed622f482b0a93a1e0db5.zip
tcl-16f7aa77f536ccb3a36ed622f482b0a93a1e0db5.tar.gz
tcl-16f7aa77f536ccb3a36ed622f482b0a93a1e0db5.tar.bz2
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.
-rw-r--r--ChangeLog6
-rw-r--r--generic/tclExecute.c6
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 <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();