Commit 8952dea4 authored by Andreas Mohr's avatar Andreas Mohr Committed by Alexandre Julliard

Fixed cmd line length calculation.

parent 3ba4be40
...@@ -499,10 +499,10 @@ WINE_MODREF *MODULE_FindModule( ...@@ -499,10 +499,10 @@ WINE_MODREF *MODULE_FindModule(
* Returns FALSE if the file is not an executable or if the function fails. * Returns FALSE if the file is not an executable or if the function fails.
* *
* To do so it opens the file and reads in the header information * To do so it opens the file and reads in the header information
* if the extended header information is not presend it will * if the extended header information is not present it will
* assume that that the file is a DOS executable. * assume that the file is a DOS executable.
* If the extended header information is present it will * If the extended header information is present it will
* determine if the file is an 16 or 32 bit Windows executable * determine if the file is a 16 or 32 bit Windows executable
* by check the flags in the header. * by check the flags in the header.
* *
* Note that .COM and .PIF files are only recognized by their * Note that .COM and .PIF files are only recognized by their
...@@ -1050,7 +1050,6 @@ BOOL WINAPI CreateProcessA( LPCSTR lpApplicationName, LPSTR lpCommandLine, ...@@ -1050,7 +1050,6 @@ BOOL WINAPI CreateProcessA( LPCSTR lpApplicationName, LPSTR lpCommandLine,
char name[256], dummy[256]; char name[256], dummy[256];
LPCSTR cmdline = NULL; LPCSTR cmdline = NULL;
LPSTR tidy_cmdline; LPSTR tidy_cmdline;
int len = 0;
/* Get name and command line */ /* Get name and command line */
...@@ -1064,19 +1063,18 @@ BOOL WINAPI CreateProcessA( LPCSTR lpApplicationName, LPSTR lpCommandLine, ...@@ -1064,19 +1063,18 @@ BOOL WINAPI CreateProcessA( LPCSTR lpApplicationName, LPSTR lpCommandLine,
name[0] = '\0'; name[0] = '\0';
if (lpApplicationName) { if (lpApplicationName)
{
found_file = make_lpApplicationName_name( lpApplicationName, name, sizeof(name) ); found_file = make_lpApplicationName_name( lpApplicationName, name, sizeof(name) );
if (lpCommandLine) { if (lpCommandLine)
make_lpCommandLine_name( lpCommandLine, dummy, sizeof ( dummy ), &cmdline ); make_lpCommandLine_name( lpCommandLine, dummy, sizeof ( dummy ), &cmdline );
} else
else {
cmdline = lpApplicationName; cmdline = lpApplicationName;
} }
len += strlen(lpApplicationName); else
} {
else { if (lpCommandLine)
found_file = make_lpCommandLine_name( lpCommandLine, name, sizeof ( name ), &cmdline ); found_file = make_lpCommandLine_name( lpCommandLine, name, sizeof ( name ), &cmdline );
if (lpCommandLine) len = strlen(lpCommandLine);
} }
if ( !found_file ) { if ( !found_file ) {
...@@ -1085,8 +1083,10 @@ BOOL WINAPI CreateProcessA( LPCSTR lpApplicationName, LPSTR lpCommandLine, ...@@ -1085,8 +1083,10 @@ BOOL WINAPI CreateProcessA( LPCSTR lpApplicationName, LPSTR lpCommandLine,
return FALSE; return FALSE;
} }
len += strlen(name) + 2; if (!cmdline) cmdline = "";
tidy_cmdline = HeapAlloc( GetProcessHeap(), 0, len ); tidy_cmdline = HeapAlloc( GetProcessHeap(), 0, strlen(name) + strlen(cmdline) + 3 );
TRACE_(module)("tidy_cmdline: name '%s'[%d], cmdline '%s'[%d]\n",
name, strlen(name), cmdline, strlen(cmdline));
sprintf( tidy_cmdline, "\"%s\"%s", name, cmdline); sprintf( tidy_cmdline, "\"%s\"%s", name, cmdline);
/* Warn if unsupported features are used */ /* Warn if unsupported features are used */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment