Author: hbelusca
Date: Sat Apr 4 14:59:03 2015
New Revision: 67048
URL:
http://svn.reactos.org/svn/reactos?rev=67048&view=rev
Log:
[CMD]: Addendum to r67013: Check whether len > 0 before decrementing it in case we
point to a newline. Fix some spurious crashes and should fix some other cmd_winetests.
Modified:
trunk/reactos/base/shell/cmd/console.c
Modified: trunk/reactos/base/shell/cmd/console.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/cmd/console.c?r…
==============================================================================
--- trunk/reactos/base/shell/cmd/console.c [iso-8859-1] (original)
+++ trunk/reactos/base/shell/cmd/console.c [iso-8859-1] Sat Apr 4 14:59:03 2015
@@ -179,7 +179,7 @@
/* Loop until we find a \r or \n character */
// FIXME: What about the pair \r\n ?
p = str;
- while (*(PWCHAR)p != L'\r' && *(PWCHAR)p != L'\n'
&& len > 0)
+ while (len > 0 && *(PWCHAR)p != L'\r' &&
*(PWCHAR)p != L'\n')
{
/* Advance one character */
p = (PVOID)((PWCHAR)p + 1);
@@ -191,7 +191,7 @@
WriteFile(hOutput, str, dwNumBytes, &dwNumBytes, NULL);
/* If we hit \r or \n ... */
- if (*(PWCHAR)p == L'\r' || *(PWCHAR)p == L'\n')
+ if (len > 0 && (*(PWCHAR)p == L'\r' || *(PWCHAR)p ==
L'\n'))
{
/* ... send a carriage-return + newline sequence and skip \r or \n */
WriteFile(hOutput, L"\r\n", 2 * sizeof(WCHAR), &dwNumBytes,
NULL);
@@ -229,7 +229,7 @@
/* Loop until we find a \r or \n character */
// FIXME: What about the pair \r\n ?
p = str;
- while (*(PCHAR)p != '\r' && *(PCHAR)p != '\n'
&& len > 0)
+ while (len > 0 && *(PCHAR)p != '\r' && *(PCHAR)p
!= '\n')
{
/* Advance one character */
p = (PVOID)((PCHAR)p + 1);
@@ -241,7 +241,7 @@
WriteFile(hOutput, str, dwNumBytes, &dwNumBytes, NULL);
/* If we hit \r or \n ... */
- if (*(PCHAR)p == '\r' || *(PCHAR)p == '\n')
+ if (len > 0 && (*(PCHAR)p == '\r' || *(PCHAR)p ==
'\n'))
{
/* ... send a carriage-return + newline sequence and skip \r or \n */
WriteFile(hOutput, "\r\n", 2, &dwNumBytes, NULL);