[Python-checkins] r69639 - in python/trunk: Include/longintrepr.h Objects/longobject.c

mark.dickinson python-checkins at python.org
Sun Feb 15 16:48:39 CET 2009


Author: mark.dickinson
Date: Sun Feb 15 16:48:39 2009
New Revision: 69639

Log:
A few more minor fixed in longobject.c


Modified:
   python/trunk/Include/longintrepr.h
   python/trunk/Objects/longobject.c

Modified: python/trunk/Include/longintrepr.h
==============================================================================
--- python/trunk/Include/longintrepr.h	(original)
+++ python/trunk/Include/longintrepr.h	Sun Feb 15 16:48:39 2009
@@ -19,6 +19,7 @@
    long_pow() requires that SHIFT be divisible by 5. */
 
 typedef unsigned short digit;
+typedef short sdigit;                   /* signed variant of digit */
 #define BASE_TWODIGITS_TYPE long
 typedef unsigned BASE_TWODIGITS_TYPE twodigits;
 typedef BASE_TWODIGITS_TYPE stwodigits; /* signed variant of twodigits */

Modified: python/trunk/Objects/longobject.c
==============================================================================
--- python/trunk/Objects/longobject.c	(original)
+++ python/trunk/Objects/longobject.c	Sun Feb 15 16:48:39 2009
@@ -63,7 +63,7 @@
 PyLongObject *
 _PyLong_New(Py_ssize_t size)
 {
-	if (size > MAX_LONG_DIGITS) {
+	if (size > (Py_ssize_t)MAX_LONG_DIGITS) {
 		PyErr_SetString(PyExc_OverflowError,
 				"too many digits in integer");
 		return NULL;
@@ -1945,7 +1945,7 @@
 		if (i < 0)
 			sign = 0;
 		else {
-			sign = (int)a->ob_digit[i] - (int)b->ob_digit[i];
+			sign = (sdigit)a->ob_digit[i] - (sdigit)b->ob_digit[i];
 			if (Py_SIZE(a) < 0)
 				sign = -sign;
 		}
@@ -2865,7 +2865,7 @@
 		for (i = Py_SIZE(b) - 1; i >= 0; --i) {
 			digit bi = b->ob_digit[i];
 
-			for (j = 1 << (PyLong_SHIFT-1); j != 0; j >>= 1) {
+			for (j = (digit)1 << (PyLong_SHIFT-1); j != 0; j >>= 1) {
 				MULT(z, z, z)
 				if (bi & j)
 					MULT(z, a, z)
@@ -3099,9 +3099,8 @@
 {
 	digit maska, maskb; /* 0 or PyLong_MASK */
 	int negz;
-	Py_ssize_t size_a, size_b, size_z;
+	Py_ssize_t size_a, size_b, size_z, i;
 	PyLongObject *z;
-	int i;
 	digit diga, digb;
 	PyObject *v;
 


More information about the Python-checkins mailing list