fix: subprocess drain should write buffered data too

This commit is contained in:
CJ van den Berg 2025-09-29 22:27:39 +02:00
parent ad6f40b456
commit fb9207d225
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9

View file

@ -47,8 +47,13 @@ pub fn writer(self: *Self, buffer: []u8) Writer {
fn drain(w: *std.Io.Writer, data_: []const []const u8, splat: usize) std.Io.Writer.Error!usize {
const writer_: *Self.Writer = @alignCast(@fieldParentPtr("interface", w));
if (data_.len == 0) return 0;
var written: usize = 0;
const buffered = w.buffered();
if (buffered.len != 0) {
const n = try writer_.subprocess.write(buffered);
written += w.consume(n);
}
if (data_.len == 0) return written;
for (data_[0 .. data_.len - 1]) |bytes| {
written += try writer_.subprocess.write(bytes);
}