Fix arena_size computation.

Fix arena_size arena_new() computation to incorporate
runs_avail_nclasses elements for runs_avail, rather than
(runs_avail_nclasses - 1) elements.  Since offsetof(arena_t, runs_avail)
is used rather than sizeof(arena_t) for the first term of the
computation, all of the runs_avail elements must be added into the
second term.

This bug was introduced (by Jason Evans) while merging pull request #330
as 3417a304cc (Separate arena_avail
trees).
This commit is contained in:
Dave Watson 2016-02-24 20:10:02 -08:00 committed by Jason Evans
parent cd86c1481a
commit 3812729167

View File

@ -3271,7 +3271,7 @@ arena_new(unsigned ind)
/* Compute arena size to incorporate sufficient runs_avail elements. */ /* Compute arena size to incorporate sufficient runs_avail elements. */
arena_size = offsetof(arena_t, runs_avail) + (sizeof(arena_run_tree_t) * arena_size = offsetof(arena_t, runs_avail) + (sizeof(arena_run_tree_t) *
(runs_avail_nclasses - 1)); runs_avail_nclasses);
/* /*
* Allocate arena, arena->lstats, and arena->hstats contiguously, mainly * Allocate arena, arena->lstats, and arena->hstats contiguously, mainly
* because there is no way to clean up if base_alloc() OOMs. * because there is no way to clean up if base_alloc() OOMs.