[Stackless-checkins] r55311 - stackless/branches/release25-maint/Stackless/core/slp_transfer.c

kristjan.jonsson python-checkins at python.org
Mon May 14 16:24:56 CEST 2007


Author: kristjan.jonsson
Date: Mon May 14 16:24:51 2007
New Revision: 55311

Modified:
   stackless/branches/release25-maint/Stackless/core/slp_transfer.c
Log:
Fix a serious bug on 64 bit windows. slp_save_state was using an int to compute stack differences.  When this function was called from assembler, it was not automatically sign extended to 64 bits, and therefore, negative results got interpreted as large positive ones.
Now the testsuite runs perfectly on XP64

Modified: stackless/branches/release25-maint/Stackless/core/slp_transfer.c
==============================================================================
--- stackless/branches/release25-maint/Stackless/core/slp_transfer.c	(original)
+++ stackless/branches/release25-maint/Stackless/core/slp_transfer.c	Mon May 14 16:24:51 2007
@@ -62,15 +62,9 @@
 #undef __return
 #define __return(x) { exitcode = x; goto exit; }
 
-int slp_save_state(intptr_t *stack){
-	int exitcode;
-#ifdef SSIZE_T
-	/* Only on Windows apparently. */
-	SSIZE_T diff;
-#else
-	/* Py_ssize_t when we port to 2.5? */
-	int diff;
-#endif
+intptr_t slp_save_state(intptr_t *stack){
+	intptr_t exitcode;
+	intptr_t diff;
 	SLP_SAVE_STATE(stack, diff);
 	return diff;
 exit:

_______________________________________________
Stackless-checkins mailing list
Stackless-checkins at stackless.com
http://www.stackless.com/mailman/listinfo/stackless-checkins



More information about the Stackless-checkins mailing list