summaryrefslogtreecommitdiff
path: root/sal/osl/unx/process.c
diff options
context:
space:
mode:
Diffstat (limited to 'sal/osl/unx/process.c')
-rw-r--r--sal/osl/unx/process.c15
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));