}
template <typename Block> void free_list_allocator<Block>::sweep() {
- auto null_sweep = [](Block* free_block, cell size) { };
+ auto null_sweep = [](Block* free_block, cell size) { (void)free_block; (void)size; };
sweep(null_sweep);
}
if (!state.marked_p(block_addr))
return;
*finger = (Block*)(block_addr + size);
- memmove((Block*)dest_addr, block, size);
+ if (dest_addr != (cell)block) {
+ memmove((Block*)dest_addr, block, size);
+ }
iter(block, (Block*)dest_addr, size);
dest_addr += size;
};