Hi Ziqing,
On 2/14/22 02:43, Ziqing Hui wrote:
Signed-off-by: Ziqing Hui zhui@codeweavers.com
dlls/wininet/internet.c | 42 +++++++++++++++++++++++++---------- dlls/wininet/tests/internet.c | 16 ++++++------- 2 files changed, 38 insertions(+), 20 deletions(-)
diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c index 59fae2fbc95..61e713f41e2 100644 --- a/dlls/wininet/internet.c +++ b/dlls/wininet/internet.c @@ -3400,36 +3400,54 @@ BOOL WINAPI InternetTimeToSystemTimeW( LPCWSTR string, SYSTEMTIME* time, DWORD r * a SYSTEMTIME structure. */
- while (*s && !iswalpha( *s )) s++;
- if (s[0] == '\0' || s[1] == '\0' || s[2] == '\0') return TRUE;
- while (*s && !iswalnum(*s)) s++;
- if (*s == '\0') return TRUE; time->wDayOfWeek = 7;
- for (i = 0; i < 7; i++)
- if (iswalpha(*s)) {
if (!wcsnicmp( WININET_wkday[i], s, 3 ))
if (s[1] == '\0' || s[2] == '\0') return TRUE;
for (i = 0; i < 7; i++) {
time->wDayOfWeek = i;
break;
if (!wcsnicmp(WININET_wkday[i], s, 3))
{
time->wDayOfWeek = i;
break;
} } }
- else
This else branch will be executed for any Unicode digit, not only '0' - '9'. Something like an explicit comparison to '0' and '9' would be better (and yeah, we already got it wrong in other places in this function).
- {
time->wDayOfWeek = *s - '0';
++s;
- }
I'm not sure how we should behave if more digits were given in input, but it seems that we could just use wcstol() here (and let it fail day > 6 tests).
Thanks,
Jacek