From 0d3c141243db42dd4a1a7017ecfdfba0985ed70d Mon Sep 17 00:00:00 2001 From: daan Date: Thu, 23 Apr 2020 17:28:44 -0700 Subject: [PATCH] add check for if commit fails in segment allocation --- src/segment.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/segment.c b/src/segment.c index 8aa838a2..28594843 100644 --- a/src/segment.c +++ b/src/segment.c @@ -627,8 +627,13 @@ static mi_segment_t* mi_segment_init(mi_segment_t* segment, size_t required, mi_ if (!commit) { // ensure the initial info is committed bool commit_zero = false; - _mi_mem_commit(segment, pre_size, &commit_zero, tld->os); + bool ok = _mi_mem_commit(segment, pre_size, &commit_zero, tld->os); if (commit_zero) is_zero = true; + if (!ok) { + // commit failed; we cannot touch the memory: free the segment directly and return `NULL` + _mi_mem_free(segment, MI_SEGMENT_SIZE, memid, false, false, os_tld); + return NULL; + } } segment->memid = memid; segment->mem_is_fixed = mem_large;