in reply to Re^5: Can't spawn "cmd.exe":
in thread Can't spawn "cmd.exe":
So, your "That's quite wrong", is quite wrong.
What part? You didn't contradict anything I said.
But if it makes you happy, the following is also true.
The problem is with Perl's handling of Windows return codes. Trying to force fit a 32-bit signed int into an unsigned char doesn't go :)
That's quite wrong.
The problem occurs when coercing the 32-bit unsigned value into 31 unsigned bits (a 32-bit signed value where negative has a special meaning).
DWORD status; ... GetExitCodeProcess(ProcessInformation.hProcess, &status); ret = (int)status;
Forcing the value into 8 bits doesn't even happen when you see that warning.
if (status < 0) { if (ckWARN(WARN_EXEC)) Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't spawn \"%s\": %s +", argv[0], strerror(errno)); status = 255 * 256; } else status *= 256; <---- coercion into 8 bits PL_statusvalue = status; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^7: Can't spawn "cmd.exe":
by BrowserUk (Patriarch) on Mar 19, 2009 at 11:01 UTC | |
by ikegami (Patriarch) on Mar 19, 2009 at 13:12 UTC | |
by BrowserUk (Patriarch) on Mar 19, 2009 at 14:02 UTC | |
by ikegami (Patriarch) on Mar 19, 2009 at 14:34 UTC | |
by BrowserUk (Patriarch) on Mar 19, 2009 at 15:19 UTC |