crt: Check for NULL handle returned from wide WinAPI functions On Win9x wide WinAPI functions return NULL handle (0) to indicate error that function failed, instead of INVALID_HANDLE_VALUE handle (-1). Signed-off-by: LIU Hao <lh_mouse@126.com>
diff --git a/mingw-w64-crt/stdio/_wfindfirst64.c b/mingw-w64-crt/stdio/_wfindfirst64.c index e8b1c8d..b4f6cb0 100644 --- a/mingw-w64-crt/stdio/_wfindfirst64.c +++ b/mingw-w64-crt/stdio/_wfindfirst64.c
@@ -19,7 +19,7 @@ HANDLE handle; handle = FindFirstFileW(path, &win32_find_data); - win32_find_data_to_crt_find_data(handle != INVALID_HANDLE_VALUE, &win32_find_data, find_data); + win32_find_data_to_crt_find_data(handle != NULL && handle != INVALID_HANDLE_VALUE, &win32_find_data, find_data); return (intptr_t)handle; }
diff --git a/mingw-w64-crt/stdio/_wstat32.c b/mingw-w64-crt/stdio/_wstat32.c index 6b0ac1b..a3524e4 100644 --- a/mingw-w64-crt/stdio/_wstat32.c +++ b/mingw-w64-crt/stdio/_wstat32.c
@@ -66,7 +66,7 @@ int err; HANDLE handle; handle = CreateFileW(_Name, FILE_READ_ATTRIBUTES, FILE_SHARE_VALID_FLAGS, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); - if (handle == INVALID_HANDLE_VALUE) { + if (handle == NULL || handle == INVALID_HANDLE_VALUE) { switch (GetLastError()) { case ERROR_PATH_NOT_FOUND: case ERROR_FILE_NOT_FOUND:
diff --git a/mingw-w64-crt/stdio/_wstat64.c b/mingw-w64-crt/stdio/_wstat64.c index 1ffaf62..c764daa 100644 --- a/mingw-w64-crt/stdio/_wstat64.c +++ b/mingw-w64-crt/stdio/_wstat64.c
@@ -25,7 +25,7 @@ stat->st_gid = st.st_gid; stat->st_rdev = st.st_rdev; handle = FindFirstFileW(path, &fi); - if (handle != INVALID_HANDLE_VALUE) { + if (handle != NULL && handle != INVALID_HANDLE_VALUE) { FindClose(handle); stat->st_size = ((_off64_t)fi.nFileSizeHigh << 32) | fi.nFileSizeLow; stat->st_atime = filetime_to_time64(&fi.ftLastAccessTime);