Browse Source

Merge pull request #4346 from flysand7/os2-fix-process-exec

Don't append to buffer if nothing was read
Laytan 10 months ago
parent
commit
60eac68be7
2 changed files with 4 additions and 2 deletions
  1. 3 2
      core/os/os2/process.odin
  2. 1 0
      tests/core/os/os2/process.odin

+ 3 - 2
core/os/os2/process.odin

@@ -405,10 +405,10 @@ process_exec :: proc(
 		defer stderr = stderr_b[:]
 		defer stderr = stderr_b[:]
 
 
 		buf: [1024]u8 = ---
 		buf: [1024]u8 = ---
-		n: int
-
+		
 		stdout_done, stderr_done, has_data: bool
 		stdout_done, stderr_done, has_data: bool
 		for err == nil && (!stdout_done || !stderr_done) {
 		for err == nil && (!stdout_done || !stderr_done) {
+			n := 0
 
 
 			if !stdout_done {
 			if !stdout_done {
 				has_data, err = pipe_has_data(stdout_r)
 				has_data, err = pipe_has_data(stdout_r)
@@ -426,6 +426,7 @@ process_exec :: proc(
 			}
 			}
 
 
 			if err == nil && !stderr_done {
 			if err == nil && !stderr_done {
+				n = 0
 				has_data, err = pipe_has_data(stderr_r)
 				has_data, err = pipe_has_data(stderr_r)
 				if has_data {
 				if has_data {
 					n, err = read(stderr_r, buf[:])
 					n, err = read(stderr_r, buf[:])

+ 1 - 0
tests/core/os/os2/process.odin

@@ -21,4 +21,5 @@ test_process_exec :: proc(t: ^testing.T) {
 	testing.expect_value(t, state.success, true)
 	testing.expect_value(t, state.success, true)
 	testing.expect_value(t, err, nil)
 	testing.expect_value(t, err, nil)
 	testing.expect_value(t, string(stdout), "hellope\n")
 	testing.expect_value(t, string(stdout), "hellope\n")
+	testing.expect_value(t, string(stderr), "")
 }
 }