[Python-checkins] r66383 - in python/trunk: Misc/NEWS Objects/obmalloc.c

martin.v.loewis python-checkins at python.org
Thu Sep 11 08:53:31 CEST 2008


Author: martin.v.loewis
Date: Thu Sep 11 08:53:30 2008
New Revision: 66383

Log:
Issue #3642: Suppress warning in obmalloc when size_t is 
larger than uint. Reverts r65975. Reviewed by Brett Cannon.


Modified:
   python/trunk/Misc/NEWS
   python/trunk/Objects/obmalloc.c

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Thu Sep 11 08:53:30 2008
@@ -12,6 +12,8 @@
 Core and Builtins
 -----------------
 
+- Issue #3642: Suppress warning in obmalloc when size_t is larger than uint.
+
 - Issue #3743: In a few places, PY_FORMAT_SIZE_T was incorrectly used with
   PyString_FromFormat or PyErr_Format to display size_t values. The macro
   PY_FORMAT_SIZE_T is designed to select the correct format for the OS
@@ -52,9 +54,6 @@
 
 - Fix problem using wrong name in decimal module reported by pychecker.
 
-- Issue #3642: Changed type of numarenas from uint to size_t
-  in order to silence a compilier warning on 64bit OSes.
-
 - Silenced another compiler warning about a used but not defined
   function 'stringlib_contains_obj'.
 

Modified: python/trunk/Objects/obmalloc.c
==============================================================================
--- python/trunk/Objects/obmalloc.c	(original)
+++ python/trunk/Objects/obmalloc.c	Thu Sep 11 08:53:30 2008
@@ -517,7 +517,7 @@
 #endif
 	if (unused_arena_objects == NULL) {
 		uint i;
-		size_t numarenas;
+		uint numarenas;
 		size_t nbytes;
 
 		/* Double the number of arena objects on each allocation.
@@ -526,8 +526,10 @@
 		numarenas = maxarenas ? maxarenas << 1 : INITIAL_ARENA_OBJECTS;
 		if (numarenas <= maxarenas)
 			return NULL;	/* overflow */
+#if SIZEOF_SIZE_T <= SIZEOF_INT
 		if (numarenas > PY_SIZE_MAX / sizeof(*arenas))
 			return NULL;	/* overflow */
+#endif
 		nbytes = numarenas * sizeof(*arenas);
 		arenaobj = (struct arena_object *)realloc(arenas, nbytes);
 		if (arenaobj == NULL)


More information about the Python-checkins mailing list