From 6f972c190be27310d4fd7f5100405a2f4d47af81 Mon Sep 17 00:00:00 2001 From: Daniel Bertalan Date: Sun, 5 Nov 2023 17:42:31 +0100 Subject: [PATCH] Everywhere: Work around Clang trunk bug with templated lambda + Variant Since 2023-09-08, Clang trunk has had a bug which causes a segfault when evaluating certain `requires` expressions inside templated lambdas. There isn't an imminent fix on the horizon, so let's work around the issue by specifying the type of the offending lambda arguments explicitly. See https://github.com/llvm/llvm-project/issues/67260 --- .../Libraries/LibJS/Runtime/Intl/DateTimeFormatConstructor.cpp | 2 +- Userland/Libraries/LibWeb/WebDriver/Capabilities.cpp | 2 +- Userland/Services/RequestServer/ConnectionCache.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormatConstructor.cpp b/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormatConstructor.cpp index 77d1f63de14b40..11dc78d27b9db6 100644 --- a/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormatConstructor.cpp +++ b/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormatConstructor.cpp @@ -273,7 +273,7 @@ ThrowCompletionOr> create_date_time_format(VM& vm, PropertyKey const* explicit_format_component = nullptr; // 39. For each row of Table 6, except the header row, in table order, do - TRY(for_each_calendar_field(vm, format_options, [&](auto& option, auto const& property, auto const& values) -> ThrowCompletionOr { + TRY(for_each_calendar_field(vm, format_options, [&](auto& option, PropertyKey const& property, auto const& values) -> ThrowCompletionOr { using ValueType = typename RemoveReference::ValueType; // a. Let prop be the name given in the Property column of the row. diff --git a/Userland/Libraries/LibWeb/WebDriver/Capabilities.cpp b/Userland/Libraries/LibWeb/WebDriver/Capabilities.cpp index caad3524a24f1d..415fcb227da1df 100644 --- a/Userland/Libraries/LibWeb/WebDriver/Capabilities.cpp +++ b/Userland/Libraries/LibWeb/WebDriver/Capabilities.cpp @@ -77,7 +77,7 @@ static ErrorOr validate_capabilities(JsonValue const& capabil JsonObject result; // 3. For each enumerable own property in capability, run the following substeps: - TRY(capability.as_object().try_for_each_member([&](auto const& name, auto const& value) -> ErrorOr { + TRY(capability.as_object().try_for_each_member([&](auto const& name, JsonValue const& value) -> ErrorOr { // a. Let name be the name of the property. // b. Let value be the result of getting a property named name from capability. diff --git a/Userland/Services/RequestServer/ConnectionCache.h b/Userland/Services/RequestServer/ConnectionCache.h index 76675b01da0786..ec42a2bf972c40 100644 --- a/Userland/Services/RequestServer/ConnectionCache.h +++ b/Userland/Services/RequestServer/ConnectionCache.h @@ -137,7 +137,7 @@ ErrorOr recreate_socket_if_needed(T& connection, URL const& url) if (!connection.socket->is_open() || connection.socket->is_eof()) { // Create another socket for the connection. - auto set_socket = [&](auto socket) -> ErrorOr { + auto set_socket = [&](NonnullOwnPtr&& socket) -> ErrorOr { connection.socket = TRY(Core::BufferedSocket::create(move(socket))); return {}; };