fix a small bug after me, and check if it really got memmory or not. Modified: trunk/reactos/subsys/system/cmd/start.c _____
Modified: trunk/reactos/subsys/system/cmd/start.c --- trunk/reactos/subsys/system/cmd/start.c 2005-09-03 23:12:17 UTC (rev 17626) +++ trunk/reactos/subsys/system/cmd/start.c 2005-09-04 09:29:44 UTC (rev 17627) @@ -21,8 +21,8 @@
{ TCHAR szFullName[MAX_PATH]; TCHAR first[CMDLINE_LENGTH]; - TCHAR *rest; - TCHAR *param; + TCHAR *rest = NULL; + TCHAR *param = NULL; BOOL bWait = FALSE; BOOL bBat = FALSE; BOOL bCreate = FALSE; @@ -30,11 +30,8 @@ PROCESS_INFORMATION prci; STARTUPINFO stui;
+ - - - param[0] = _T('\0'); - if (_tcsncmp (Rest, _T("/?"), 2) == 0) { ConOutResPaging(TRUE,STRING_START_HELP1); @@ -50,7 +47,23 @@ } rest = malloc ( _tcslen(Rest) + 1 * sizeof(TCHAR)); + if (rest == NULL) + { + error_out_of_memory(); + return 1; + }
+ param =malloc ( _tcslen(Rest) + 1 * sizeof(TCHAR)); + if (rest == NULL) + { + free(rest); + error_out_of_memory(); + return 1; + } + + param[0] = _T('\0'); + + _tcscpy(rest,Rest); /* Parsing the command that gets called by start, and it's parameters */ @@ -63,8 +76,8 @@ for(i = 0; i < count; i++) { if(rest[i] == _T(' ')) - { - param = malloc ( _tcslen(&rest[i]) + 1 * sizeof(TCHAR)); + { + _tcscpy(param,&rest[i]); rest[i] = _T('\0'); break; @@ -83,7 +96,7 @@ if(rest[i] == _T('"')) bInside = !bInside; if((rest[i] == _T(' ')) && !bInside) - { + { _tcscpy(param,&rest[i]); rest[i] = _T('\0'); break; @@ -134,6 +147,7 @@
if (param != NULL) free(param); + return 1; }
@@ -148,6 +162,7 @@ if (!SearchForExecutable (_T("CMD"), szFullCmdLine)) { error_bad_command (); + if (rest != NULL) free(rest);
@@ -179,8 +194,9 @@ if (bBat == FALSE) { _tcscpy (szFullCmdLine, first); - if( param ) + if( param != NULL ) { + _tcscat(szFullCmdLine, _T(" ") ); _tcscat (szFullCmdLine, param); } @@ -224,8 +240,8 @@ ErrorMessage(GetLastError (), _T("Error executing CreateProcess()!!\n")); } -// }
+ if (rest != NULL) free(rest);