DoxigAlpha

Function parameters

Parameters

#
ctx:*anyopaque
len:usize
alignment:mem.Alignment
return_address:usize

Type definitions in this namespace

Types

#

Functions in this namespace

Functions

#
getStackTrace
Only valid once `has_induced_failure == true`

Source

Implementation

#
fn alloc(
    ctx: *anyopaque,
    len: usize,
    alignment: mem.Alignment,
    return_address: usize,
) ?[*]u8 {
    const self: *FailingAllocator = @ptrCast(@alignCast(ctx));
    if (self.alloc_index == self.fail_index) {
        if (!self.has_induced_failure) {
            @memset(&self.stack_addresses, 0);
            var stack_trace = std.builtin.StackTrace{
                .instruction_addresses = &self.stack_addresses,
                .index = 0,
            };
            std.debug.captureStackTrace(return_address, &stack_trace);
            self.has_induced_failure = true;
        }
        return null;
    }
    const result = self.internal_allocator.rawAlloc(len, alignment, return_address) orelse
        return null;
    self.allocated_bytes += len;
    self.allocations += 1;
    self.alloc_index += 1;
    return result;
}