std.debug.lockStderr: cancel protection rather than recancel

because we need to return the value
This commit is contained in:
Andrew Kelley
2025-12-22 15:13:48 -08:00
parent 3c2f5adf41
commit 78c4fcfcd8
+3 -1
View File
@@ -281,8 +281,10 @@ pub const sys_can_stack_trace = switch (builtin.cpu.arch) {
/// application's chosen `Io` implementation.
pub fn lockStderr(buffer: []u8) Io.LockedStderr {
const io = std.options.debug_io;
const prev = io.swapCancelProtection(.blocked);
defer _ = io.swapCancelProtection(prev);
return io.lockStderr(buffer, null) catch |err| switch (err) {
error.Canceled => io.recancel(),
error.Canceled => unreachable, // Cancel protection enabled above.
};
}