| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -540,6 +540,8 @@ new_arena(void) | |||
| 540 | 540 | { | |
| 541 | 541 | struct arena_object* arenaobj; | |
| 542 | 542 | uint excess; /* number of bytes above pool alignment */ | |
| 543 | + void *address; | ||
| 544 | + int err; | ||
| 543 | 545 | ||
| 544 | 546 | #ifdef PYMALLOC_DEBUG | |
| 545 | 547 | if (Py_GETENV("PYTHONMALLOCSTATS")) | |
@@ -593,19 +595,22 @@ new_arena(void) | |||
| 593 | 595 | unused_arena_objects = arenaobj->nextarena; | |
| 594 | 596 | assert(arenaobj->address == 0); | |
| 595 | 597 | #ifdef ARENAS_USE_MMAP | |
| 596 | - arenaobj->address = (uptr)mmap(NULL, ARENA_SIZE, PROT_READ|PROT_WRITE, | ||
| 598 | + address = mmap(NULL, ARENA_SIZE, PROT_READ|PROT_WRITE, | ||
| 597 | 599 | MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); | |
| 600 | + err = (address == MAP_FAILED); | ||
| 598 | 601 | #else | |
| 599 | - arenaobj->address = (uptr)malloc(ARENA_SIZE); | ||
| 602 | + address = malloc(ARENA_SIZE); | ||
| 603 | + err = (address == 0); | ||
| 600 | 604 | #endif | |
| 601 | - if (arenaobj->address == 0) { | ||
| 605 | + if (err) { | ||
| 602 | 606 | /* The allocation failed: return NULL after putting the | |
| 603 | 607 | * arenaobj back. | |
| 604 | 608 | */ | |
| 605 | 609 | arenaobj->nextarena = unused_arena_objects; | |
| 606 | 610 | unused_arena_objects = arenaobj; | |
| 607 | 611 | return NULL; | |
| 608 | 612 | } | |
| 613 | + arenaobj->address = (uptr)address; | ||
| 609 | 614 | ||
| 610 | 615 | ++narenas_currently_allocated; | |
| 611 | 616 | #ifdef PYMALLOC_DEBUG | |
| Back | FazBrowse Home | New Git URL |
0 commit comments