Bläddra i källkod

LibCore: Remove unnecessary lifetime extension from ProcessSpawnOptions

We don't need `file_actions` to be a constant-reference. It's created
in-place by its one user (HackStudio). Because it is currently a const-
ref, if we try to create a ProcessSpawnOptions like so:

    Core::ProcessSpawnOptions options { .name = "foo"sv };

We get the following error with clang 18:

    lifetime extension of temporary created by aggregate initialization
    using a default member initializer is not yet supported; lifetime of
    temporary will end at the end of the full-expression
Timothy Flynn 1 år sedan
förälder
incheckning
207f3f1cb4
2 ändrade filer med 2 tillägg och 2 borttagningar
  1. 1 1
      Userland/Libraries/LibCore/Process.cpp
  2. 1 1
      Userland/Libraries/LibCore/Process.h

+ 1 - 1
Userland/Libraries/LibCore/Process.cpp

@@ -364,7 +364,7 @@ ErrorOr<IPCProcess::ProcessAndIPCSocket> IPCProcess::spawn_and_connect_to_proces
     ArmedScopeGuard guard_fd_0 { [&] { MUST(System::close(socket_fds[0])); } };
     ArmedScopeGuard guard_fd_1 { [&] { MUST(System::close(socket_fds[1])); } };
 
-    auto& file_actions = const_cast<Vector<ProcessSpawnOptions::FileActionType>&>(options.file_actions);
+    auto& file_actions = const_cast<ProcessSpawnOptions&>(options).file_actions;
     file_actions.append(FileAction::CloseFile { socket_fds[0] });
 
     auto takeover_string = MUST(String::formatted("{}:{}", options.name, socket_fds[1]));

+ 1 - 1
Userland/Libraries/LibCore/Process.h

@@ -41,7 +41,7 @@ struct ProcessSpawnOptions {
     Optional<ByteString> working_directory {};
 
     using FileActionType = Variant<FileAction::OpenFile, FileAction::CloseFile>;
-    Vector<FileActionType> const& file_actions {};
+    Vector<FileActionType> file_actions {};
 };
 
 class IPCProcess;