diff --git a/reactos/subsys/system/cmd/cmd.c b/reactos/subsys/system/cmd/cmd.c index 32dcb6c86c1..1ca86351174 100644 --- a/reactos/subsys/system/cmd/cmd.c +++ b/reactos/subsys/system/cmd/cmd.c @@ -1037,14 +1037,13 @@ static INT ProcessInput (BOOL bFlag) { TCHAR commandline[CMDLINE_LENGTH]; - TCHAR *readline = NULL; + TCHAR readline[CMDLINE_LENGTH]; LPTSTR tp = NULL; LPTSTR ip; LPTSTR cp; BOOL bEchoThisLine; - - readline = malloc(CMDLINE_LENGTH * sizeof(TCHAR)); + do { /* if no batch input then... */ @@ -1053,7 +1052,7 @@ ProcessInput (BOOL bFlag) if (bFlag) return 0; - readline = ReadCommand (readline, CMDLINE_LENGTH); + ReadCommand (readline, CMDLINE_LENGTH); ip = readline; bEchoThisLine = FALSE; } diff --git a/reactos/subsys/system/cmd/cmd.h b/reactos/subsys/system/cmd/cmd.h index 19b5bb4b1eb..c3dea180ee1 100644 --- a/reactos/subsys/system/cmd/cmd.h +++ b/reactos/subsys/system/cmd/cmd.h @@ -106,7 +106,7 @@ extern HANDLE CMD_ModuleHandle; /* Prototypes for CMDINPUT.C */ -TCHAR * ReadCommand (LPTSTR, INT); +VOID ReadCommand (LPTSTR, INT); /* Prototypes for CMDTABLE.C */ diff --git a/reactos/subsys/system/cmd/cmdinput.c b/reactos/subsys/system/cmd/cmdinput.c index 872c08b4c0f..d48a6b3b268 100644 --- a/reactos/subsys/system/cmd/cmdinput.c +++ b/reactos/subsys/system/cmd/cmdinput.c @@ -124,7 +124,7 @@ ClearCommandLine (LPTSTR str, INT maxlen, SHORT orgx, SHORT orgy) /* read in a command line */ -TCHAR * ReadCommand (LPTSTR str, INT maxlen) +VOID ReadCommand (LPTSTR str, INT maxlen) { SHORT orgx; /* origin x/y */ SHORT orgy; @@ -508,15 +508,10 @@ TCHAR * ReadCommand (LPTSTR str, INT maxlen) default: #ifdef _UNICODE ch = ir.Event.KeyEvent.uChar.UnicodeChar; - charcount ++; - str = realloc(str, charcount); - - if ((ch >= 32 && ch <= 255)) + if ((ch >= 32 && ch <= 255) && (charcount != (maxlen - 2))) #else - ch = ir.Event.KeyEvent.uChar.AsciiChar; - str = realloc(str, 2 + current * sizeof(TCHAR)); - - if ((UCHAR)ch >= 32 ) + ch = ir.Event.KeyEvent.uChar.AsciiChar; + if ((UCHAR)ch >= 32 && (charcount != (maxlen - 2))) #endif /* _UNICODE */ { /* insert character into string... */ @@ -525,8 +520,6 @@ TCHAR * ReadCommand (LPTSTR str, INT maxlen) /* If this character insertion will cause screen scrolling, * adjust the saved origin of the command prompt. */ tempscreen = _tcslen(str + current) + curx; - str = realloc(str, tempscreen * sizeof(TCHAR)); - if ((tempscreen % maxx) == (maxx - 1) && (tempscreen / maxx) + cury == (maxy - 1)) { @@ -534,8 +527,6 @@ TCHAR * ReadCommand (LPTSTR str, INT maxlen) cury--; } - - for (count = charcount; count > current; count--) str[count] = str[count - 1]; str[current++] = ch; @@ -579,6 +570,4 @@ TCHAR * ReadCommand (LPTSTR str, INT maxlen) while (ir.Event.KeyEvent.wVirtualKeyCode != VK_RETURN); SetCursorType (bInsert, TRUE); - - return str; }