Fix diagnostics on MS-Windows when environment is too large
* w32/subproc/sub_proc.c (process_begin): Fix test of the error
cause when the environment block is too large.
Copyright-paperwork-exempt: yes.
diff --git a/w32/subproc/sub_proc.c b/w32/subproc/sub_proc.c
index 3ce7ad3..a1e4fac 100644
--- a/w32/subproc/sub_proc.c
+++ b/w32/subproc/sub_proc.c
@@ -753,14 +753,15 @@
if (envp) {
if (arr2envblk(envp, &envblk, &envsize_needed) == FALSE) {
- pproc->last_err = 0;
pproc->lerrno = E_NO_MEM;
free( command_line );
- if (pproc->last_err == ERROR_INVALID_PARAMETER
+ if ((pproc->last_err == ERROR_INVALID_PARAMETER
+ || pproc->last_err == ERROR_MORE_DATA)
&& envsize_needed > 32*1024) {
fprintf (stderr, "CreateProcess failed, probably because environment is too large (%d bytes).\n",
envsize_needed);
}
+ pproc->last_err = 0;
return(-1);
}
}