Merge pull request #3 from marler8997/fixDoubleClose

fix double free of stdout/stderr child process handles
This commit is contained in:
CJ van den Berg 2025-01-06 20:29:50 +01:00 committed by GitHub
commit b7ace53387
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -127,7 +127,9 @@ const Proc = struct {
_ = self.args.reset(.free_all); _ = self.args.reset(.free_all);
self.stream_stdout = tp.file_stream.init("stdout", self.child.stdout.?.handle) catch |e| return self.handle_error(e); self.stream_stdout = tp.file_stream.init("stdout", self.child.stdout.?.handle) catch |e| return self.handle_error(e);
self.child.stdout = null; // ownership transferred
self.stream_stderr = tp.file_stream.init("stderr", self.child.stderr.?.handle) catch |e| return self.handle_error(e); self.stream_stderr = tp.file_stream.init("stderr", self.child.stderr.?.handle) catch |e| return self.handle_error(e);
self.child.stderr = null; // ownership transferred
if (self.stream_stdout) |stream| stream.start_read() catch |e| return self.handle_error(e); if (self.stream_stdout) |stream| stream.start_read() catch |e| return self.handle_error(e);
if (self.stream_stderr) |stream| stream.start_read() catch |e| return self.handle_error(e); if (self.stream_stderr) |stream| stream.start_read() catch |e| return self.handle_error(e);