Merge branch 'dev' into dev3

This commit is contained in:
daanx 2025-01-04 17:45:03 -08:00
commit 18bc6d9056

View file

@ -944,14 +944,21 @@ void* _mi_malloc_generic(mi_heap_t* heap, size_t size, bool zero, size_t huge_al
mi_assert_internal(_mi_ptr_page(page)==page); mi_assert_internal(_mi_ptr_page(page)==page);
// and try again, this time succeeding! (i.e. this should never recurse through _mi_page_malloc) // and try again, this time succeeding! (i.e. this should never recurse through _mi_page_malloc)
void* p;
if mi_unlikely(zero && mi_page_is_huge(page)) { if mi_unlikely(zero && mi_page_is_huge(page)) {
// note: we cannot call _mi_page_malloc with zeroing for huge blocks; we zero it afterwards in that case. // note: we cannot call _mi_page_malloc with zeroing for huge blocks; we zero it afterwards in that case.
void* p = _mi_page_malloc(heap, page, size); p = _mi_page_malloc(heap, page, size);
mi_assert_internal(p != NULL); mi_assert_internal(p != NULL);
_mi_memzero_aligned(p, mi_page_usable_block_size(page)); _mi_memzero_aligned(p, mi_page_usable_block_size(page));
return p;
} }
else { else {
return _mi_page_malloc_zero(heap, page, size, zero); p = _mi_page_malloc_zero(heap, page, size, zero);
mi_assert_internal(p != NULL);
} }
// move singleton pages to the full queue
if (page->reserved == page->used) {
mi_assert_internal(page->reserved == 1);
mi_page_to_full(page, mi_page_queue_of(page));
}
return p;
} }