summaryrefslogtreecommitdiffstats
path: root/Objects/obmalloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'Objects/obmalloc.c')
-rw-r--r--Objects/obmalloc.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/Objects/obmalloc.c b/Objects/obmalloc.c
index 3c6ae57..c766ccd 100644
--- a/Objects/obmalloc.c
+++ b/Objects/obmalloc.c
@@ -213,9 +213,6 @@
#undef uchar
#define uchar unsigned char /* assuming == 8 bits */
-#undef ushort
-#define ushort unsigned short /* assuming >= 16 bits */
-
#undef uint
#define uint unsigned int /* assuming >= 16 bits */
@@ -235,7 +232,7 @@ struct pool_header {
block *freeblock; /* pool's free list head */
struct pool_header *nextpool; /* next pool of this size class */
struct pool_header *prevpool; /* previous pool "" */
- ulong arenaindex; /* index into arenas of base adr */
+ uint arenaindex; /* index into arenas of base adr */
uint szidx; /* block size class index */
uint capacity; /* pool capacity in # of blocks */
};
@@ -312,8 +309,8 @@ static poolp freepools = NULL; /* free list for cached pools */
* to the OS.
*/
static uptr *arenas = NULL;
-static ulong narenas = 0;
-static ulong maxarenas = 0;
+static uint narenas = 0;
+static uint maxarenas = 0;
/* Number of pools still available to be allocated in the current arena. */
static uint nfreepools = 0;
@@ -330,7 +327,7 @@ dumpem(void *ptr)
{
if (ptr)
printf("inserted new arena at %08x\n", ptr);
- printf("# arenas %d\n", narenas);
+ printf("# arenas %u\n", narenas);
printf("was mine %lu wasn't mine %lu\n", wasmine, wasntmine);
}
#define INCMINE ++wasmine
@@ -403,8 +400,12 @@ new_arena(void)
* XXX until after the PyMem_FREE(oldarenas) below completes.
*/
uptr *oldarenas;
- int newmax = maxarenas + (maxarenas >> 1);
- uptr *p = (uptr *)PyMem_MALLOC(newmax * sizeof(*arenas));
+ uptr *p;
+ uint newmax = maxarenas + (maxarenas >> 1);
+
+ if (newmax <= maxarenas) /* overflow */
+ goto error;
+ p = (uptr *)PyMem_MALLOC(newmax * sizeof(*arenas));
if (p == NULL)
goto error;
memcpy(p, arenas, narenas * sizeof(*arenas));
@@ -417,7 +418,7 @@ new_arena(void)
/* Append the new arena address to arenas. */
assert(narenas < maxarenas);
arenas[narenas] = (uptr)bp;
- ++narenas;
+ ++narenas; /* can't overflow, since narenas < maxarenas before */
dumpem(bp);
return bp;