Fixed memory allocation bug.

This commit is contained in:
Alexandre Julliard 1999-09-22 15:18:52 +00:00
parent 99b68252a1
commit 94822425f0
1 changed files with 8 additions and 9 deletions

View File

@ -722,6 +722,7 @@ static BOOL MODULE_CreateUnixProcess( LPCSTR filename, LPCSTR lpCmdLine,
DOS_FULL_NAME full_name; DOS_FULL_NAME full_name;
const char *unixfilename = filename; const char *unixfilename = filename;
const char *argv[256], **argptr; const char *argv[256], **argptr;
char *p = NULL;
BOOL iconic = FALSE; BOOL iconic = FALSE;
/* Get Unix file name and iconic flag */ /* Get Unix file name and iconic flag */
@ -736,10 +737,8 @@ static BOOL MODULE_CreateUnixProcess( LPCSTR filename, LPCSTR lpCmdLine,
argptr = argv; argptr = argv;
if ( !useWine ) if ( !useWine )
{ {
char *p = strdup(lpCmdLine); p = strdup(lpCmdLine);
if ( strchr(filename, '/') if (strchr(filename, '/') || strchr(filename, ':') || strchr(filename, '\\'))
|| strchr(filename, ':')
|| strchr(filename, '\\') )
{ {
if ( DOSFS_GetFullName( filename, TRUE, &full_name ) ) if ( DOSFS_GetFullName( filename, TRUE, &full_name ) )
unixfilename = full_name.long_name; unixfilename = full_name.long_name;
@ -753,7 +752,6 @@ static BOOL MODULE_CreateUnixProcess( LPCSTR filename, LPCSTR lpCmdLine,
*argptr++ = p; *argptr++ = p;
while (*p && *p != ' ' && *p != '\t') p++; while (*p && *p != ' ' && *p != '\t') p++;
} }
free (p);
} }
else else
{ {
@ -784,6 +782,7 @@ static BOOL MODULE_CreateUnixProcess( LPCSTR filename, LPCSTR lpCmdLine,
memset( lpProcessInfo, '\0', sizeof( *lpProcessInfo ) ); memset( lpProcessInfo, '\0', sizeof( *lpProcessInfo ) );
lpProcessInfo->hProcess = INVALID_HANDLE_VALUE; lpProcessInfo->hProcess = INVALID_HANDLE_VALUE;
lpProcessInfo->hThread = INVALID_HANDLE_VALUE; lpProcessInfo->hThread = INVALID_HANDLE_VALUE;
if (p) free(p);
SetLastError( ERROR_SUCCESS ); SetLastError( ERROR_SUCCESS );
return TRUE; return TRUE;