diff --git a/w32/subproc/sub_proc.c b/w32/subproc/sub_proc.c index 3ce7ad3e..a1e4faca 100644 --- a/w32/subproc/sub_proc.c +++ b/w32/subproc/sub_proc.c @@ -753,14 +753,15 @@ process_begin( 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); } }