Alexandre Julliard : kernel32: Avoid using memchrW().
Alexandre Julliard
julliard at winehq.org
Wed Apr 1 15:50:58 CDT 2020
Module: wine
Branch: master
Commit: e71ffcde30a7b21ea929dd770876873177024e0f
URL: https://source.winehq.org/git/wine.git/?a=commit;h=e71ffcde30a7b21ea929dd770876873177024e0f
Author: Alexandre Julliard <julliard at winehq.org>
Date: Wed Apr 1 10:30:13 2020 +0200
kernel32: Avoid using memchrW().
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/kernel32/profile.c | 18 ++++++++----------
dlls/kernel32/volume.c | 6 +++---
2 files changed, 11 insertions(+), 13 deletions(-)
diff --git a/dlls/kernel32/profile.c b/dlls/kernel32/profile.c
index c7382fd7b3..434728c267 100644
--- a/dlls/kernel32/profile.c
+++ b/dlls/kernel32/profile.c
@@ -311,7 +311,7 @@ static PROFILESECTION *PROFILE_Load(HANDLE hFile, ENCODING * pEncoding)
WCHAR * szFile;
const WCHAR *szLineStart, *szLineEnd;
const WCHAR *szValueStart, *szEnd, *next_line;
- int line = 0, len;
+ int len;
PROFILESECTION *section, *first_section;
PROFILESECTION **next_section;
PROFILEKEY *key, *prev_key, **next_key;
@@ -402,14 +402,10 @@ static PROFILESECTION *PROFILE_Load(HANDLE hFile, ENCODING * pEncoding)
while (next_line < szEnd)
{
szLineStart = next_line;
- next_line = memchrW(szLineStart, '\n', szEnd - szLineStart);
- if (!next_line) next_line = memchrW(szLineStart, '\r', szEnd - szLineStart);
- if (!next_line) next_line = szEnd;
- else next_line++;
+ while (next_line < szEnd && *next_line != '\n' && *next_line != '\r') next_line++;
+ while (next_line < szEnd && (*next_line == '\n' || *next_line == '\r')) next_line++;
szLineEnd = next_line;
- line++;
-
/* get rid of white space */
while (szLineStart < szLineEnd && PROFILE_isspaceW(*szLineStart)) szLineStart++;
while ((szLineEnd > szLineStart) && PROFILE_isspaceW(szLineEnd[-1])) szLineEnd--;
@@ -421,8 +417,8 @@ static PROFILESECTION *PROFILE_Load(HANDLE hFile, ENCODING * pEncoding)
for (len = szLineEnd - szLineStart; len > 0; len--) if (szLineStart[len - 1] == ']') break;
if (!len)
{
- WARN("Invalid section header at line %d: %s\n",
- line, debugstr_wn(szLineStart, (int)(szLineEnd - szLineStart)) );
+ WARN("Invalid section header: %s\n",
+ debugstr_wn(szLineStart, (int)(szLineEnd - szLineStart)) );
}
else
{
@@ -450,7 +446,8 @@ static PROFILESECTION *PROFILE_Load(HANDLE hFile, ENCODING * pEncoding)
/* get rid of white space after the name and before the start
* of the value */
len = szLineEnd - szLineStart;
- if ((szValueStart = memchrW( szLineStart, '=', szLineEnd - szLineStart )) != NULL)
+ for (szValueStart = szLineStart; szValueStart < szLineEnd; szValueStart++) if (*szValueStart == '=') break;
+ if (szValueStart < szLineEnd)
{
const WCHAR *szNameEnd = szValueStart;
while ((szNameEnd > szLineStart) && PROFILE_isspaceW(szNameEnd[-1])) szNameEnd--;
@@ -458,6 +455,7 @@ static PROFILESECTION *PROFILE_Load(HANDLE hFile, ENCODING * pEncoding)
szValueStart++;
while (szValueStart < szLineEnd && PROFILE_isspaceW(*szValueStart)) szValueStart++;
}
+ else szValueStart = NULL;
if (len || !prev_key || *prev_key->name)
{
diff --git a/dlls/kernel32/volume.c b/dlls/kernel32/volume.c
index 7967a55b2f..4f0f4a0a0f 100644
--- a/dlls/kernel32/volume.c
+++ b/dlls/kernel32/volume.c
@@ -674,7 +674,7 @@ BOOL WINAPI GetVolumeInformationW( LPCWSTR root, LPWSTR label, DWORD label_len,
IO_STATUS_BLOCK io;
OBJECT_ATTRIBUTES attr;
FILE_FS_DEVICE_INFORMATION info;
- WCHAR *p;
+ unsigned int i;
enum fs_type type = FS_UNKNOWN;
BOOL ret = FALSE;
@@ -685,8 +685,8 @@ BOOL WINAPI GetVolumeInformationW( LPCWSTR root, LPWSTR label, DWORD label_len,
return FALSE;
}
/* there must be exactly one backslash in the name, at the end */
- p = memchrW( nt_name.Buffer + 4, '\\', (nt_name.Length - 4) / sizeof(WCHAR) );
- if (p != nt_name.Buffer + nt_name.Length / sizeof(WCHAR) - 1)
+ for (i = 4; i < nt_name.Length / sizeof(WCHAR); i++) if (nt_name.Buffer[i] == '\\') break;
+ if (i != nt_name.Length / sizeof(WCHAR) - 1)
{
/* check if root contains an explicit subdir */
if (root[0] && root[1] == ':') root += 2;
More information about the wine-cvs
mailing list