Module: wine Branch: master Commit: 186f189107972b739311f95a4ba3833838349b32 URL: https://source.winehq.org/git/wine.git/?a=commit;h=186f189107972b739311f95a4...
Author: Alexandre Julliard julliard@winehq.org Date: Mon Mar 30 12:09:44 2020 +0200
ntdll: Avoid using memchrW().
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntdll/actctx.c | 15 +++++++++------ dlls/ntdll/directory.c | 9 ++++++--- dlls/ntdll/env.c | 18 ++++++++---------- 3 files changed, 23 insertions(+), 19 deletions(-)
diff --git a/dlls/ntdll/actctx.c b/dlls/ntdll/actctx.c index d5f376f224..cd17c6c135 100644 --- a/dlls/ntdll/actctx.c +++ b/dlls/ntdll/actctx.c @@ -1272,6 +1272,7 @@ static xmlstr_t find_xmlns( xmlbuf_t *xmlbuf, const xmlstr_t *name ) static BOOL next_xml_attr(xmlbuf_t *xmlbuf, struct xml_attr *attr, BOOL *end) { const WCHAR* ptr; + WCHAR quote;
if (xmlbuf->error) return FALSE;
@@ -1319,11 +1320,12 @@ static BOOL next_xml_attr(xmlbuf_t *xmlbuf, struct xml_attr *attr, BOOL *end)
if (ptr == xmlbuf->end || (*ptr != '"' && *ptr != ''')) return set_error( xmlbuf );
- attr->value.ptr = ++ptr; + quote = *ptr++; + attr->value.ptr = ptr; if (ptr == xmlbuf->end) return set_error( xmlbuf );
- ptr = memchrW(ptr, ptr[-1], xmlbuf->end - ptr); - if (!ptr) + while (ptr < xmlbuf->end && *ptr != quote) ptr++; + if (ptr == xmlbuf->end) { xmlbuf->ptr = xmlbuf->end; return set_error( xmlbuf ); @@ -1369,8 +1371,8 @@ static BOOL next_xml_elem( xmlbuf_t *xmlbuf, struct xml_elem *elem, const struct
for (;;) { - ptr = memchrW(xmlbuf->ptr, '<', xmlbuf->end - xmlbuf->ptr); - if (!ptr) + for (ptr = xmlbuf->ptr; ptr < xmlbuf->end; ptr++) if (*ptr == '<') break; + if (ptr == xmlbuf->end) { xmlbuf->ptr = xmlbuf->end; return set_error( xmlbuf ); @@ -1447,7 +1449,8 @@ static BOOL parse_text_content(xmlbuf_t* xmlbuf, xmlstr_t* content)
if (xmlbuf->error) return FALSE;
- if (!(ptr = memchrW(xmlbuf->ptr, '<', xmlbuf->end - xmlbuf->ptr))) return set_error( xmlbuf ); + for (ptr = xmlbuf->ptr; ptr < xmlbuf->end; ptr++) if (*ptr == '<') break; + if (ptr == xmlbuf->end) return set_error( xmlbuf );
content->ptr = xmlbuf->ptr; content->len = ptr - xmlbuf->ptr; diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c index 80777da149..d025a37241 100644 --- a/dlls/ntdll/directory.c +++ b/dlls/ntdll/directory.c @@ -305,9 +305,12 @@ static inline unsigned int dir_info_size( FILE_INFORMATION_CLASS class, unsigned
static inline BOOL has_wildcard( const UNICODE_STRING *mask ) { - return (!mask || - memchrW( mask->Buffer, '*', mask->Length / sizeof(WCHAR) ) || - memchrW( mask->Buffer, '?', mask->Length / sizeof(WCHAR) )); + int i; + + if (!mask) return TRUE; + for (i = 0; i < mask->Length / sizeof(WCHAR); i++) + if (mask->Buffer[i] == '*' || mask->Buffer[i] == '?') return TRUE; + return FALSE; }
/* get space from the current directory data buffer, allocating a new one if necessary */ diff --git a/dlls/ntdll/env.c b/dlls/ntdll/env.c index 833da58f35..28be49d0b1 100644 --- a/dlls/ntdll/env.c +++ b/dlls/ntdll/env.c @@ -1081,7 +1081,7 @@ NTSTATUS WINAPI RtlExpandEnvironmentStrings( const WCHAR *renv, WCHAR *src, SIZE WCHAR *dst, SIZE_T count, SIZE_T *plen ) { SIZE_T len, total_size = 1; /* 1 for terminating '\0' */ - LPCWSTR env, p, var; + LPCWSTR env, var;
if (!renv) { @@ -1094,27 +1094,26 @@ NTSTATUS WINAPI RtlExpandEnvironmentStrings( const WCHAR *renv, WCHAR *src, SIZE { if (*src != '%') { - if ((p = memchrW( src, '%', src_len ))) len = p - src; - else len = src_len; + for (len = 0; len < src_len; len++) if (src[len] == '%') break; var = src; src += len; src_len -= len; } else /* we are at the start of a variable */ { - if ((p = memchrW( src + 1, '%', src_len - 1 ))) + for (len = 1; len < src_len; len++) if (src[len] == '%') break; + if (len < src_len) { - len = p - src - 1; /* Length of the variable name */ - if ((var = ENV_FindVariable( env, src + 1, len ))) + if ((var = ENV_FindVariable( env, src + 1, len - 1 ))) { - src += len + 2; /* Skip the variable name */ - src_len -= len + 2; + src += len + 1; /* Skip the variable name */ + src_len -= len + 1; len = strlenW(var); } else { var = src; /* Copy original name instead */ - len += 2; + len++; src += len; src_len -= len; } @@ -1122,7 +1121,6 @@ NTSTATUS WINAPI RtlExpandEnvironmentStrings( const WCHAR *renv, WCHAR *src, SIZE else /* unfinished variable name, ignore it */ { var = src; - len = src_len; /* Copy whole string */ src += len; src_len = 0; }