mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-05-10 17:29:31 +03:00
fix free bug for meta data
This commit is contained in:
parent
d5c4a16e58
commit
637de624b3
1 changed files with 12 additions and 1 deletions
|
@ -145,7 +145,7 @@ void _mi_meta_free(void* p, size_t size, mi_memid_t memid) {
|
|||
mi_assert_internal(mi_bitmap_is_clearN(&mpage->blocks_free, block_idx, block_count));
|
||||
// we zero on free (and on the initial page allocation) so we don't need a "dirty" map
|
||||
_mi_memzero_aligned(mi_meta_block_start(mpage, block_idx), block_count*MI_META_BLOCK_SIZE);
|
||||
mi_bitmap_clearN(&mpage->blocks_free, block_idx, block_count);
|
||||
mi_bitmap_setN(&mpage->blocks_free, block_idx, block_count,NULL);
|
||||
}
|
||||
else if (mi_memid_is_os(memid)) {
|
||||
_mi_os_free(p, size, memid);
|
||||
|
@ -154,3 +154,14 @@ void _mi_meta_free(void* p, size_t size, mi_memid_t memid) {
|
|||
mi_assert_internal(mi_memid_needs_no_free(memid));
|
||||
}
|
||||
}
|
||||
|
||||
bool _mi_meta_is_meta_page(void* p)
|
||||
{
|
||||
mi_meta_page_t* mpage0 = mi_atomic_load_ptr_acquire(mi_meta_page_t, &mi_meta_pages);
|
||||
mi_meta_page_t* mpage = mpage0;
|
||||
while (mpage != NULL) {
|
||||
if ((void*)mpage == p) return true;
|
||||
mpage = mi_meta_page_next(mpage);
|
||||
}
|
||||
return false;
|
||||
}
|
Loading…
Add table
Reference in a new issue