mirror of
https://github.com/RGBCube/serenity
synced 2025-05-19 17:05:06 +00:00
Everywhere: Pass AK::Format TypeErasedFormatParams by reference
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=AXuVPBO_k92xXUF3qWsm&open=AXuVPBO_k92xXUF3qWsm
This commit is contained in:
parent
11832544e5
commit
f0b3aa0331
5 changed files with 39 additions and 23 deletions
|
@ -500,7 +500,7 @@ void FormatBuilder::put_hexdump(ReadonlyBytes bytes, size_t width, char fill)
|
||||||
put_char_view(bytes.size());
|
put_char_view(bytes.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
void vformat(StringBuilder& builder, StringView fmtstr, TypeErasedFormatParams params)
|
void vformat(StringBuilder& builder, StringView fmtstr, TypeErasedFormatParams& params)
|
||||||
{
|
{
|
||||||
FormatBuilder fmtbuilder { builder };
|
FormatBuilder fmtbuilder { builder };
|
||||||
FormatParser parser { fmtstr };
|
FormatParser parser { fmtstr };
|
||||||
|
@ -608,7 +608,7 @@ void Formatter<StringView>::format(FormatBuilder& builder, StringView value)
|
||||||
builder.put_string(value, m_align, m_width.value(), m_precision.value(), m_fill);
|
builder.put_string(value, m_align, m_width.value(), m_precision.value(), m_fill);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Formatter<FormatString>::vformat(FormatBuilder& builder, StringView fmtstr, TypeErasedFormatParams params)
|
void Formatter<FormatString>::vformat(FormatBuilder& builder, StringView fmtstr, TypeErasedFormatParams& params)
|
||||||
{
|
{
|
||||||
return Formatter<String>::format(builder, String::vformatted(fmtstr, params));
|
return Formatter<String>::format(builder, String::vformatted(fmtstr, params));
|
||||||
}
|
}
|
||||||
|
@ -754,7 +754,7 @@ void Formatter<float>::format(FormatBuilder& builder, float value)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef KERNEL
|
#ifndef KERNEL
|
||||||
void vout(FILE* file, StringView fmtstr, TypeErasedFormatParams params, bool newline)
|
void vout(FILE* file, StringView fmtstr, TypeErasedFormatParams& params, bool newline)
|
||||||
{
|
{
|
||||||
StringBuilder builder;
|
StringBuilder builder;
|
||||||
vformat(builder, fmtstr, params);
|
vformat(builder, fmtstr, params);
|
||||||
|
@ -778,7 +778,7 @@ void set_debug_enabled(bool value)
|
||||||
is_debug_enabled = value;
|
is_debug_enabled = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void vdbgln(StringView fmtstr, TypeErasedFormatParams params)
|
void vdbgln(StringView fmtstr, TypeErasedFormatParams& params)
|
||||||
{
|
{
|
||||||
if (!is_debug_enabled)
|
if (!is_debug_enabled)
|
||||||
return;
|
return;
|
||||||
|
@ -817,7 +817,7 @@ void vdbgln(StringView fmtstr, TypeErasedFormatParams params)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef KERNEL
|
#ifdef KERNEL
|
||||||
void vdmesgln(StringView fmtstr, TypeErasedFormatParams params)
|
void vdmesgln(StringView fmtstr, TypeErasedFormatParams& params)
|
||||||
{
|
{
|
||||||
StringBuilder builder;
|
StringBuilder builder;
|
||||||
|
|
||||||
|
@ -837,7 +837,7 @@ void vdmesgln(StringView fmtstr, TypeErasedFormatParams params)
|
||||||
kernelputstr(string.characters_without_null_termination(), string.length());
|
kernelputstr(string.characters_without_null_termination(), string.length());
|
||||||
}
|
}
|
||||||
|
|
||||||
void v_critical_dmesgln(StringView fmtstr, TypeErasedFormatParams params)
|
void v_critical_dmesgln(StringView fmtstr, TypeErasedFormatParams& params)
|
||||||
{
|
{
|
||||||
// FIXME: Try to avoid memory allocations further to prevent faulting
|
// FIXME: Try to avoid memory allocations further to prevent faulting
|
||||||
// at OOM conditions.
|
// at OOM conditions.
|
||||||
|
|
36
AK/Format.h
36
AK/Format.h
|
@ -466,16 +466,24 @@ struct Formatter<std::nullptr_t> : Formatter<FlatPtr> {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void vformat(StringBuilder&, StringView fmtstr, TypeErasedFormatParams);
|
void vformat(StringBuilder&, StringView fmtstr, TypeErasedFormatParams&);
|
||||||
|
|
||||||
#ifndef KERNEL
|
#ifndef KERNEL
|
||||||
void vout(FILE*, StringView fmtstr, TypeErasedFormatParams, bool newline = false);
|
void vout(FILE*, StringView fmtstr, TypeErasedFormatParams&, bool newline = false);
|
||||||
|
|
||||||
template<typename... Parameters>
|
template<typename... Parameters>
|
||||||
void out(FILE* file, CheckedFormatString<Parameters...>&& fmtstr, const Parameters&... parameters) { vout(file, fmtstr.view(), VariadicFormatParams { parameters... }); }
|
void out(FILE* file, CheckedFormatString<Parameters...>&& fmtstr, const Parameters&... parameters)
|
||||||
|
{
|
||||||
|
VariadicFormatParams variadic_format_params { parameters... };
|
||||||
|
vout(file, fmtstr.view(), variadic_format_params);
|
||||||
|
}
|
||||||
|
|
||||||
template<typename... Parameters>
|
template<typename... Parameters>
|
||||||
void outln(FILE* file, CheckedFormatString<Parameters...>&& fmtstr, const Parameters&... parameters) { vout(file, fmtstr.view(), VariadicFormatParams { parameters... }, true); }
|
void outln(FILE* file, CheckedFormatString<Parameters...>&& fmtstr, const Parameters&... parameters)
|
||||||
|
{
|
||||||
|
VariadicFormatParams variadic_format_params { parameters... };
|
||||||
|
vout(file, fmtstr.view(), variadic_format_params, true);
|
||||||
|
}
|
||||||
|
|
||||||
inline void outln(FILE* file) { fputc('\n', file); }
|
inline void outln(FILE* file) { fputc('\n', file); }
|
||||||
|
|
||||||
|
@ -512,12 +520,13 @@ inline void warnln() { outln(stderr); }
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void vdbgln(StringView fmtstr, TypeErasedFormatParams);
|
void vdbgln(StringView fmtstr, TypeErasedFormatParams&);
|
||||||
|
|
||||||
template<typename... Parameters>
|
template<typename... Parameters>
|
||||||
void dbgln(CheckedFormatString<Parameters...>&& fmtstr, const Parameters&... parameters)
|
void dbgln(CheckedFormatString<Parameters...>&& fmtstr, const Parameters&... parameters)
|
||||||
{
|
{
|
||||||
vdbgln(fmtstr.view(), VariadicFormatParams { parameters... });
|
VariadicFormatParams variadic_format_params { parameters... };
|
||||||
|
vdbgln(fmtstr.view(), variadic_format_params);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void dbgln() { dbgln(""); }
|
inline void dbgln() { dbgln(""); }
|
||||||
|
@ -525,22 +534,24 @@ inline void dbgln() { dbgln(""); }
|
||||||
void set_debug_enabled(bool);
|
void set_debug_enabled(bool);
|
||||||
|
|
||||||
#ifdef KERNEL
|
#ifdef KERNEL
|
||||||
void vdmesgln(StringView fmtstr, TypeErasedFormatParams);
|
void vdmesgln(StringView fmtstr, TypeErasedFormatParams&);
|
||||||
|
|
||||||
template<typename... Parameters>
|
template<typename... Parameters>
|
||||||
void dmesgln(CheckedFormatString<Parameters...>&& fmt, const Parameters&... parameters)
|
void dmesgln(CheckedFormatString<Parameters...>&& fmt, const Parameters&... parameters)
|
||||||
{
|
{
|
||||||
vdmesgln(fmt.view(), VariadicFormatParams { parameters... });
|
VariadicFormatParams variadic_format_params { parameters... };
|
||||||
|
vdmesgln(fmt.view(), variadic_format_params);
|
||||||
}
|
}
|
||||||
|
|
||||||
void v_critical_dmesgln(StringView fmtstr, TypeErasedFormatParams);
|
void v_critical_dmesgln(StringView fmtstr, TypeErasedFormatParams&);
|
||||||
|
|
||||||
// be very careful to not cause any allocations here, since we could be in
|
// be very careful to not cause any allocations here, since we could be in
|
||||||
// a very unstable situation
|
// a very unstable situation
|
||||||
template<typename... Parameters>
|
template<typename... Parameters>
|
||||||
void critical_dmesgln(CheckedFormatString<Parameters...>&& fmt, const Parameters&... parameters)
|
void critical_dmesgln(CheckedFormatString<Parameters...>&& fmt, const Parameters&... parameters)
|
||||||
{
|
{
|
||||||
v_critical_dmesgln(fmt.view(), VariadicFormatParams { parameters... });
|
VariadicFormatParams variadic_format_params { parameters... };
|
||||||
|
v_critical_dmesgln(fmt.view(), variadic_format_params);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -584,9 +595,10 @@ struct Formatter<FormatString> : Formatter<String> {
|
||||||
template<typename... Parameters>
|
template<typename... Parameters>
|
||||||
void format(FormatBuilder& builder, StringView fmtstr, const Parameters&... parameters)
|
void format(FormatBuilder& builder, StringView fmtstr, const Parameters&... parameters)
|
||||||
{
|
{
|
||||||
vformat(builder, fmtstr, VariadicFormatParams { parameters... });
|
VariadicFormatParams variadic_format_params { parameters... };
|
||||||
|
vformat(builder, fmtstr, variadic_format_params);
|
||||||
}
|
}
|
||||||
void vformat(FormatBuilder& builder, StringView fmtstr, TypeErasedFormatParams params);
|
void vformat(FormatBuilder& builder, StringView fmtstr, TypeErasedFormatParams& params);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace AK
|
} // namespace AK
|
||||||
|
|
|
@ -35,7 +35,8 @@ public:
|
||||||
template<typename... Parameters>
|
template<typename... Parameters>
|
||||||
void appendff(CheckedFormatString<Parameters...>&& fmtstr, Parameters const&... parameters)
|
void appendff(CheckedFormatString<Parameters...>&& fmtstr, Parameters const&... parameters)
|
||||||
{
|
{
|
||||||
vformat(*this, fmtstr.view(), VariadicFormatParams { parameters... });
|
VariadicFormatParams variadic_format_params { parameters... };
|
||||||
|
vformat(*this, fmtstr.view(), variadic_format_params);
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] String build() const;
|
[[nodiscard]] String build() const;
|
||||||
|
|
|
@ -32,7 +32,8 @@ public:
|
||||||
{
|
{
|
||||||
// FIXME: This really not ideal, but vformat expects StringBuilder.
|
// FIXME: This really not ideal, but vformat expects StringBuilder.
|
||||||
StringBuilder builder;
|
StringBuilder builder;
|
||||||
vformat(builder, fmtstr.view(), AK::VariadicFormatParams { parameters... });
|
AK::VariadicFormatParams variadic_format_params { parameters... };
|
||||||
|
vformat(builder, fmtstr.view(), variadic_format_params);
|
||||||
append_bytes(builder.string_view().bytes());
|
append_bytes(builder.string_view().bytes());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,8 +13,10 @@ extern bool g_report_to_debug;
|
||||||
template<typename... Ts>
|
template<typename... Ts>
|
||||||
void reportln(const StringView& format, Ts... args)
|
void reportln(const StringView& format, Ts... args)
|
||||||
{
|
{
|
||||||
if (g_report_to_debug)
|
if (g_report_to_debug) {
|
||||||
AK::vdbgln(format, AK::VariadicFormatParams { args... });
|
AK::VariadicFormatParams variadic_format_params { args... };
|
||||||
else
|
AK::vdbgln(format, variadic_format_params);
|
||||||
|
} else {
|
||||||
warnln(format, args...);
|
warnln(format, args...);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue