Browse Source

LibCore: Fix bug in CreateFileMapping call

size >> 31 >> 1 is used instead of size >> 32 to support 32-bit Windows
(size_t is 32 bit there, and you cannot shift 32-bit value by 32 bits
on x86)
This is equivalent to sizeof(size) == 4 ? 0 : size >> 32
stasoid 8 months ago
parent
commit
dabf3da7e5
1 changed files with 1 additions and 1 deletions
  1. 1 1
      Libraries/LibCore/AnonymousBufferWindows.cpp

+ 1 - 1
Libraries/LibCore/AnonymousBufferWindows.cpp

@@ -28,7 +28,7 @@ AnonymousBufferImpl::~AnonymousBufferImpl()
 
 ErrorOr<NonnullRefPtr<AnonymousBufferImpl>> AnonymousBufferImpl::create(size_t size)
 {
-    HANDLE map_handle = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, HIWORD(size), LOWORD(size), NULL);
+    HANDLE map_handle = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, size >> 31 >> 1, size & 0xFFFFFFFF, NULL);
     if (!map_handle)
         return Error::from_windows_error(GetLastError());