std: fix a couple compilation errors

This commit is contained in:
Andrew Kelley 2025-06-16 09:56:07 -07:00
parent f04bc71ed7
commit ef8d7aa251
3 changed files with 23 additions and 15 deletions

View File

@ -611,7 +611,7 @@ pub fn unlockStdErr() void {
const stderr_writer: *Writer = &stderr_file_writer.interface;
/// Protected by `stderr_mutex`.
var stderr_file_writer: std.fs.File.Writer = .{
.interface = std.fs.File.Writer.init_interface(&.{}),
.interface = std.fs.File.Writer.initInterface(&.{}),
.file = if (is_windows) undefined else .stderr(),
.mode = .streaming,
};
@ -628,7 +628,7 @@ pub fn lockStderrWriter(buffer: []u8) *Writer {
if (is_windows) stderr_file_writer.file = .stderr();
stderr_writer.flush() catch {};
stderr_writer.buffer = buffer;
return &stderr_writer;
return stderr_writer;
}
pub fn unlockStderrWriter() void {

View File

@ -993,7 +993,7 @@ pub const Reader = struct {
};
var remaining = std.math.cast(u64, offset) orelse return seek_err;
while (remaining > 0) {
const n = discard(r, .limited(remaining)) catch |err| {
const n = discard(&r.interface, .limited(remaining)) catch |err| {
r.seek_err = err;
return err;
};
@ -1252,25 +1252,29 @@ pub const Writer = struct {
/// vectors through the underlying write calls as possible.
const max_buffers_len = 16;
pub fn init(file: File, buffer: []u8) std.io.Writer {
pub fn init(file: File, buffer: []u8) Writer {
return initMode(file, buffer, .positional);
}
pub fn initMode(file: File, buffer: []u8, init_mode: Writer.Mode) std.io.Writer {
pub fn initMode(file: File, buffer: []u8, init_mode: Writer.Mode) Writer {
return .{
.file = file,
.interface = .{
.context = undefined,
.vtable = &.{
.drain = drain,
.sendFile = sendFile,
},
.buffer = buffer,
},
.interface = initInterface(buffer),
.mode = init_mode,
};
}
pub fn initInterface(buffer: []u8) std.io.Writer {
return .{
.context = undefined,
.vtable = &.{
.drain = drain,
.sendFile = sendFile,
},
.buffer = buffer,
};
}
pub fn moveToReader(w: *Writer) Reader {
defer w.* = undefined;
return .{
@ -1335,7 +1339,11 @@ pub const Writer = struct {
};
}
pub fn sendFile(io_writer: *Writer, file_reader: *Reader, limit: std.io.Limit) std.io.Writer.FileError!usize {
pub fn sendFile(
io_writer: *std.io.Writer,
file_reader: *Reader,
limit: std.io.Limit,
) std.io.Writer.FileError!usize {
const w: *Writer = @fieldParentPtr("interface", io_writer);
const out_fd = w.file.handle;
const in_fd = file_reader.file.handle;

View File

@ -162,7 +162,7 @@ pub fn defaultDiscard(r: *Reader, limit: Limit) Error!usize {
};
if (n > @intFromEnum(limit)) {
const over_amt = n - @intFromEnum(limit);
assert(over_amt <= w.buffer.end); // limit may be exceeded only by an amount within buffer capacity.
assert(over_amt <= w.buffer.len); // limit may be exceeded only by an amount within buffer capacity.
r.seek = w.end - over_amt;
r.end = w.end;
return @intFromEnum(limit);