fn resize(ctx: *anyopaque, memory: []u8, alignment: Alignment, new_len: usize, _: usize) bool ctx: *anyopaquememory: []u8alignment: Alignmentnew_len: usize_: usize1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566 fn resize(ctx: *anyopaque, memory: []u8, alignment: Alignment, new_len: usize, _: usize) bool {
@disableInstrumentation();
const f: *FuzzSingleThreadedAllocator = @ptrCast(@alignCast(ctx));
const i = f.allocIndex(memory, alignment);
const start = memory.ptr - f.buf.ptr;
const old_end = start + memory.len;
const new_end = start +| new_len;
if (new_end > f.buf.len or f.smith.value(bool)) {
return false;
}
if (new_len <= memory.len) {
// The fill is not decreased so memory is not reused.
} else if (f.fill == old_end) {
f.fill = new_end;
} else {
return false;
}
f.allocs.items(.len)[i] = new_len;
return true;
}