MCPcopy Create free account
hub / github.com/CppCXY/EmmyLuaCodeStyle / mi_verify_padding

Function mi_verify_padding

3rd/mimalloc-2.0.9/src/alloc.c:252–274  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

250}
251
252static bool mi_verify_padding(const mi_page_t* page, const mi_block_t* block, size_t* size, size_t* wrong) {
253 size_t bsize;
254 size_t delta;
255 bool ok = mi_page_decode_padding(page, block, &delta, &bsize);
256 *size = *wrong = bsize;
257 if (!ok) return false;
258 mi_assert_internal(bsize >= delta);
259 *size = bsize - delta;
260 if (!mi_page_is_huge(page)) {
261 uint8_t* fill = (uint8_t*)block + bsize - delta;
262 const size_t maxpad = (delta > MI_MAX_ALIGN_SIZE ? MI_MAX_ALIGN_SIZE : delta); // check at most the first N padding bytes
263 mi_track_mem_defined(fill, maxpad);
264 for (size_t i = 0; i < maxpad; i++) {
265 if (fill[i] != MI_DEBUG_PADDING) {
266 *wrong = bsize - delta + i;
267 ok = false;
268 break;
269 }
270 }
271 mi_track_mem_noaccess(fill, maxpad);
272 }
273 return ok;
274}
275
276static void mi_check_padding(const mi_page_t* page, const mi_block_t* block) {
277 size_t size;

Callers 1

mi_check_paddingFunction · 0.85

Calls 2

mi_page_decode_paddingFunction · 0.85
mi_page_is_hugeFunction · 0.85

Tested by

no test coverage detected