diff options
Diffstat (limited to 'sal/osl/unx/process.c')
-rw-r--r-- | sal/osl/unx/process.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/sal/osl/unx/process.c b/sal/osl/unx/process.c index bc868edad..5c07ee5f9 100644 --- a/sal/osl/unx/process.c +++ b/sal/osl/unx/process.c @@ -378,6 +378,16 @@ static oslSocket receiveFdPipe(int PipeFD) if ( !safeWrite(PipeFD, &nRetCode, sizeof(nRetCode)) ) OSL_TRACE("write failed (%s)", strerror(errno)); + if ( nRead < 0 ) + { + OSL_TRACE("write failed (%s)", strerror(errno)); + } + else if ( nRead != sizeof(nRetCode) ) + { + // TODO: Handle this case. + OSL_TRACE("partial write: wrote %d out of %d)", nRead, sizeof(nRetCode)); + } + #if defined(IOCHANNEL_TRANSFER_BSD_RENO) free(cmptr); #endif @@ -535,8 +545,9 @@ static void ChildStatusProc(void *pData) if (stdError[1] != -1) close( stdError[1] ); } - pid=execv(data.m_pszArgs[0], (sal_Char **)data.m_pszArgs); - + // No need to check the return value of execv. If we return from + // it, an error has occurred. + execv(data.m_pszArgs[0], (sal_Char **)data.m_pszArgs); } OSL_TRACE("Failed to exec, errno=%d (%s)\n", errno, strerror(errno)); |