fix assertion in mi_os_ensure_zero
This commit is contained in:
9
src/os.c
9
src/os.c
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user