From 79cfa96616c63bf81ded22b59510cf67467f1e8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Thu, 13 Oct 2022 20:06:54 +0800 Subject: [PATCH] Processing: fix Windows impl --- src/common/processing_windows.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/common/processing_windows.c b/src/common/processing_windows.c index f3bb64a2d..9ec6da811 100644 --- a/src/common/processing_windows.c +++ b/src/common/processing_windows.c @@ -28,12 +28,11 @@ const char* ffProcessAppendStdOut(FFstrbuf* buffer, char* const argv[]) }; FFstrbuf cmdline; - ffStrbufInit(&cmdline); - for(char* const* parg = argv; *parg; ++parg) + ffStrbufInitS(&cmdline, argv[0]); + for(char* const* parg = &argv[1]; *parg; ++parg) { - if(cmdline.length > 0) - ffStrbufAppendC(&cmdline, ' '); - ffStrbufAppendF(&cmdline, "\"%s\"", * parg); + ffStrbufAppendC(&cmdline, ' '); + ffStrbufAppendS(&cmdline, *parg); } BOOL success = CreateProcessA( @@ -48,6 +47,8 @@ const char* ffProcessAppendStdOut(FFstrbuf* buffer, char* const argv[]) &siStartInfo, // STARTUPINFO pointer &piProcInfo); // receives PROCESS_INFORMATION + ffStrbufDestroy(&cmdline); + CloseHandle(hChildStdoutWrite); if(!success) { @@ -55,14 +56,10 @@ const char* ffProcessAppendStdOut(FFstrbuf* buffer, char* const argv[]) return "CreateProcessA() failed"; } - char str[128]; + char str[1024]; DWORD nRead; while(ReadFile(hChildStdoutRead, str, sizeof(str), &nRead, NULL) && nRead > 0) - { ffStrbufAppendNS(buffer, nRead, str); - if(nRead < sizeof(str)) - break; - } CloseHandle(hChildStdoutRead); return NULL;