Make the log function work properly when logging in a defer that comes after the stackAllocator is freed.

This commit is contained in:
IntegratedQuantum 2023-11-27 21:00:04 +01:00
parent d95b19c263
commit e65928fd09

View File

@ -178,14 +178,22 @@ pub const std_options = struct {
}; };
fn logToFile(comptime format: []const u8, args: anytype) void { fn logToFile(comptime format: []const u8, args: anytype) void {
const string = std.fmt.allocPrint(stackAllocator, format, args) catch return; var stackFallbackAllocator: std.heap.StackFallbackAllocator(65536) = undefined;
defer stackAllocator.free(string); stackFallbackAllocator.fallback_allocator = globalAllocator;
const allocator = stackFallbackAllocator.get();
const string = std.fmt.allocPrint(allocator, format, args) catch return;
defer allocator.free(string);
logFile.writeAll(string) catch {}; logFile.writeAll(string) catch {};
} }
fn logToStdErr(comptime format: []const u8, args: anytype) void { fn logToStdErr(comptime format: []const u8, args: anytype) void {
const string = std.fmt.allocPrint(stackAllocator, format, args) catch return; var stackFallbackAllocator: std.heap.StackFallbackAllocator(65536) = undefined;
defer stackAllocator.free(string); stackFallbackAllocator.fallback_allocator = globalAllocator;
const allocator = stackFallbackAllocator.get();
const string = std.fmt.allocPrint(allocator, format, args) catch return;
defer allocator.free(string);
nosuspend std.io.getStdErr().writeAll(string) catch {}; nosuspend std.io.getStdErr().writeAll(string) catch {};
} }