Function toOwnedSlice [src]

Prototype

pub fn toOwnedSlice(a: *Allocating) Allocator.Error![]u8

Parameters

a: *Allocating

Source

pub fn toOwnedSlice(a: *Allocating) Allocator.Error![]u8 { const old_memory = a.writer.buffer; const alignment = a.alignment; const buffered_len = a.writer.end; if (old_memory.len > 0) { if (buffered_len == 0) { a.allocator.rawFree(old_memory, alignment, @returnAddress()); a.writer.buffer = &.{}; a.writer.end = 0; return old_memory[0..0]; } else if (a.allocator.rawRemap(old_memory, alignment, buffered_len, @returnAddress())) |new| { a.writer.buffer = &.{}; a.writer.end = 0; return new[0..buffered_len]; } } if (buffered_len == 0) return a.writer.buffer[0..0]; const new_memory = (a.allocator.rawAlloc(buffered_len, alignment, @returnAddress()) orelse return error.OutOfMemory)[0..buffered_len]; @memcpy(new_memory, old_memory[0..buffered_len]); if (old_memory.len != 0) a.allocator.rawFree(old_memory, alignment, @returnAddress()); a.writer.buffer = &.{}; a.writer.end = 0; return new_memory; }