Skip to content

Commit ccd38e7

Browse files
committed
Update feature macros used and use GetFileSizeEx conditionally.
1 parent 423b581 commit ccd38e7

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

httplib.h

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2823,7 +2823,7 @@ inline bool mmap::open(const char *path) {
28232823
wpath += path[i];
28242824
}
28252825

2826-
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
2826+
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) && (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
28272827
hFile_ = ::CreateFile2(wpath.c_str(), GENERIC_READ, FILE_SHARE_READ,
28282828
OPEN_EXISTING, NULL);
28292829
#else
@@ -2833,11 +2833,19 @@ inline bool mmap::open(const char *path) {
28332833

28342834
if (hFile_ == INVALID_HANDLE_VALUE) { return false; }
28352835

2836+
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)
28362837
LARGE_INTEGER size{};
28372838
if (!::GetFileSizeEx(hFile_, &size)) { return false; }
28382839
size_ = static_cast<size_t>(size.QuadPart);
2840+
#else
2841+
DWORD sizeHigh;
2842+
DWORD sizeLow;
2843+
sizeLow = ::GetFileSize(hFile_, &sizeHigh);
2844+
if (sizeLow == INVALID_FILE_SIZE) { return false; }
2845+
size_ = (static_cast<size_t>(sizeHigh) << (sizeof(DWORD) * 8)) | sizeLow;
2846+
#endif
28392847

2840-
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
2848+
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) && (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
28412849
hMapping_ =
28422850
::CreateFileMappingFromApp(hFile_, NULL, PAGE_READONLY, size_, NULL);
28432851
#else
@@ -2851,7 +2859,7 @@ inline bool mmap::open(const char *path) {
28512859
return false;
28522860
}
28532861

2854-
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
2862+
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) && (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
28552863
addr_ = ::MapViewOfFileFromApp(hMapping_, FILE_MAP_READ, 0, 0);
28562864
#else
28572865
addr_ = ::MapViewOfFile(hMapping_, FILE_MAP_READ, 0, 0, 0);

0 commit comments

Comments
 (0)