From ad628da44dd28757f2880577766b3168d7c44a8e Mon Sep 17 00:00:00 2001 From: Takase <20792268+takase1121@users.noreply.github.com> Date: Tue, 3 Dec 2024 22:47:58 +0800 Subject: [PATCH] process: do not return nil until process exited (#1973) --- src/api/process.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/api/process.c b/src/api/process.c index 50fe6e2..497663e 100644 --- a/src/api/process.c +++ b/src/api/process.c @@ -615,7 +615,8 @@ static int g_read(lua_State* L, int stream, unsigned long read_size) { length = bytesTransferred; memset(&self->overlapped[writable_stream_idx], 0, sizeof(self->overlapped[writable_stream_idx])); } - } else { + } else if (GetLastError() != ERROR_HANDLE_EOF || !poll_process(self, WAIT_NONE)) { + // emulate POSIX behavior in the code below by returning empty string until process exits signal_process(self, SIGNAL_TERM); return 0; }