Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 847deb2

Browse files
bryanoltmaneseidel
andauthored
Cast ::GetLastError to int (#57113)
`GetLastError` returns an unsigned 32 bit integer that was being implicitly cast to an int for the std::variant<..., int>. This was causing my build to fail with: ``` ../../flutter/shell/platform/windows/platform_handler.cc(178,12): error: no viable conversion from returned value of type 'DWORD' (aka 'unsigned long') to function return type 'std::variant<std::wstring, int>' (aka 'variant<basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t>>, int>') 178 | return ::GetLastError(); | ^~~~~~~~~~~~~~~~ ../../../../../../../Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.42.34433/include\variant(923,7): note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'DWORD' (aka 'unsigned long') to 'const variant<basic_string<wchar_t>, int> &' for 1st argument 923 | class variant : private _SMF_control<_Variant_destroy_layer<_Types...>, _Types...> { // discriminated union | ^~~~~~~ ``` Commands: ``` ./flutter/tools/gn --runtime-mode release --no-rbe ninja -C .\out\host_release windows gen_snapshot flutter/build/archives:windows_flutter ``` Explicitly casting `::GetLastError` to an int fixes this issue. I'm running on Windows 11 (Version 10.0.26100 Build 26100) with VS 2022 Community Edition. @loic-sharma Co-authored-by: Eric Seidel <eric@shorebird.dev>
1 parent d7d3fa7 commit 847deb2

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

shell/platform/windows/platform_handler.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,15 @@ class ScopedGlobalMemory {
6060
memory_ = ::GlobalAlloc(flags, bytes);
6161
if (!memory_) {
6262
FML_LOG(ERROR) << "Unable to allocate global memory: "
63-
<< ::GetLastError();
63+
<< static_cast<int>(::GetLastError());
6464
}
6565
}
6666

6767
~ScopedGlobalMemory() {
6868
if (memory_) {
6969
if (::GlobalFree(memory_) != nullptr) {
7070
FML_LOG(ERROR) << "Failed to free global allocation: "
71-
<< ::GetLastError();
71+
<< static_cast<int>(::GetLastError());
7272
}
7373
}
7474
}
@@ -175,12 +175,12 @@ std::variant<std::wstring, int> ScopedClipboard::GetString() {
175175

176176
HANDLE data = ::GetClipboardData(CF_UNICODETEXT);
177177
if (data == nullptr) {
178-
return ::GetLastError();
178+
return static_cast<int>(::GetLastError());
179179
}
180180
ScopedGlobalLock locked_data(data);
181181

182182
if (!locked_data.get()) {
183-
return ::GetLastError();
183+
return static_cast<int>(::GetLastError());
184184
}
185185
return static_cast<wchar_t*>(locked_data.get());
186186
}

0 commit comments

Comments
 (0)