Fix a crashing case where arena_chunk_init_hard returns NULL.
This happens when it fails to allocate a new chunk. Which arena_chunk_alloc then passes into arena_avail_insert without any checks. This then causes a crash when arena_avail_insert tries to check chunk->ndirty. This was introduced by the refactoring of arena_chunk_alloc which previously would have returned NULL immediately after calling chunk_alloc. This is now the return from arena_chunk_init_hard so we need to check that return, and not continue if it was NULL.
This commit is contained in:
parent
9e20df163c
commit
20a8c78bfe
@ -614,8 +614,11 @@ arena_chunk_alloc(arena_t *arena)
|
|||||||
|
|
||||||
if (arena->spare != NULL)
|
if (arena->spare != NULL)
|
||||||
chunk = arena_chunk_init_spare(arena);
|
chunk = arena_chunk_init_spare(arena);
|
||||||
else
|
else {
|
||||||
chunk = arena_chunk_init_hard(arena);
|
chunk = arena_chunk_init_hard(arena);
|
||||||
|
if (chunk == NULL)
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
|
|
||||||
/* Insert the run into the runs_avail tree. */
|
/* Insert the run into the runs_avail tree. */
|
||||||
arena_avail_insert(arena, chunk, map_bias, chunk_npages-map_bias,
|
arena_avail_insert(arena, chunk, map_bias, chunk_npages-map_bias,
|
||||||
|
Loading…
Reference in New Issue
Block a user