Commit 4de2b1ea65

Alex Kladov <aleksey.kladov@gmail.com>
2025-01-30 13:01:53
std: don't leak a process in Child.run in case of an error
Closes: #22433
1 parent c104e86
Changed files (1)
lib
std
process
lib/std/process/Child.zig
@@ -428,12 +428,15 @@ pub fn run(args: struct {
     }
 
     try child.spawn();
+    errdefer {
+        _ = child.kill() catch {};
+    }
     try child.collectOutput(&stdout, &stderr, args.max_output_bytes);
 
     return RunResult{
-        .term = try child.wait(),
         .stdout = try stdout.toOwnedSlice(),
         .stderr = try stderr.toOwnedSlice(),
+        .term = try child.wait(),
     };
 }