Explorar o código

AK: Pass AK::Format TypeErasedFormatParams by reference in AK::String

This silences a overeager warning in sonar cloud, warning that
slicing could occur with `VariadicFormatParams` which derives from
`TypeErasedFormatParams`.

Reference:
https://sonarcloud.io/project/issues?id=SerenityOS_serenity&issues=AXuVPBW3k92xXUF3qXTE&open=AXuVPBW3k92xXUF3qXTE

This is a continuation of f0b3aa033134b788a28fe8cf8ff6028d0e7941e8.
Brian Gianforcaro %!s(int64=3) %!d(string=hai) anos
pai
achega
fee2a03ba9
Modificáronse 2 ficheiros con 4 adicións e 3 borrados
  1. 1 1
      AK/String.cpp
  2. 3 2
      AK/String.h

+ 1 - 1
AK/String.cpp

@@ -515,7 +515,7 @@ InputStream& operator>>(InputStream& stream, String& string)
     }
     }
 }
 }
 
 
-String String::vformatted(StringView fmtstr, TypeErasedFormatParams params)
+String String::vformatted(StringView fmtstr, TypeErasedFormatParams& params)
 {
 {
     StringBuilder builder;
     StringBuilder builder;
     vformat(builder, fmtstr, params);
     vformat(builder, fmtstr, params);

+ 3 - 2
AK/String.h

@@ -265,12 +265,13 @@ public:
         return String((const char*)buffer.data(), buffer.size(), should_chomp);
         return String((const char*)buffer.data(), buffer.size(), should_chomp);
     }
     }
 
 
-    [[nodiscard]] static String vformatted(StringView fmtstr, TypeErasedFormatParams);
+    [[nodiscard]] static String vformatted(StringView fmtstr, TypeErasedFormatParams&);
 
 
     template<typename... Parameters>
     template<typename... Parameters>
     [[nodiscard]] static String formatted(CheckedFormatString<Parameters...>&& fmtstr, const Parameters&... parameters)
     [[nodiscard]] static String formatted(CheckedFormatString<Parameters...>&& fmtstr, const Parameters&... parameters)
     {
     {
-        return vformatted(fmtstr.view(), VariadicFormatParams { parameters... });
+        VariadicFormatParams variadic_format_parameters { parameters... };
+        return vformatted(fmtstr.view(), variadic_format_parameters);
     }
     }
 
 
     template<typename T>
     template<typename T>