fix assertion in mi_os_ensure_zero

This commit is contained in:
Daan 2025-06-06 21:09:32 -07:00
parent 2f0540c4f9
commit 57830a4b25

View file

@ -370,14 +370,15 @@ void* _mi_os_alloc_aligned(size_t size, size_t alignment, bool commit, bool allo
mi_assert_internal(memid->mem.os.size >= size); mi_assert_internal(memid->mem.os.size >= size);
mi_assert_internal(_mi_is_aligned(p,alignment)); mi_assert_internal(_mi_is_aligned(p,alignment));
mi_assert_internal(!commit || memid->initially_committed); if (commit) { mi_assert_internal(memid->initially_committed); }
mi_assert_internal(!memid->initially_zero || memid->initially_committed); if (memid->initially_zero) { mi_assert_internal(memid->initially_committed); }
return p; return p;
} }
mi_decl_nodiscard static void* mi_os_ensure_zero(void* p, size_t size, mi_memid_t* memid) { mi_decl_nodiscard static void* mi_os_ensure_zero(void* p, size_t size, mi_memid_t* memid) {
if (p==NULL || size==0 || memid->initially_zero) return p; if (p==NULL || size==0) return p;
// ensure committed
if (!memid->initially_committed) { if (!memid->initially_committed) {
bool is_zero = false; bool is_zero = false;
if (!_mi_os_commit(p, size, &is_zero)) { if (!_mi_os_commit(p, size, &is_zero)) {
@ -386,6 +387,8 @@ mi_decl_nodiscard static void* mi_os_ensure_zero(void* p, size_t size, mi_memid_
} }
memid->initially_committed = true; memid->initially_committed = true;
} }
// ensure zero'd
if (memid->initially_zero) return p;
_mi_memzero_aligned(p,size); _mi_memzero_aligned(p,size);
memid->initially_zero = true; memid->initially_zero = true;
return p; return p;