From cb9fa588ba8144fcdd52ba4b83d69d93fb18066f Mon Sep 17 00:00:00 2001 From: Dominick Allen Date: Sun, 30 Mar 2025 23:08:43 -0500 Subject: Add hash map. --- include/fud_format.hpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'include/fud_format.hpp') diff --git a/include/fud_format.hpp b/include/fud_format.hpp index e80d96e..0dff3c1 100644 --- a/include/fud_format.hpp +++ b/include/fud_format.hpp @@ -261,6 +261,9 @@ struct FormatArguments { template static auto makeFormatArguments(Args&&... args) -> FormatArguments { + static_assert(Size == sizeof...(Args)); + constexpr size_t MaxStackFormatArgSize = 2048U; + static_assert(sizeof(FormatArguments) < MaxStackFormatArgSize); return FormatArguments{Array{{FormatArgument{std::forward(args)}...}}}; } }; @@ -440,6 +443,10 @@ FormatResult vFormat(Sink& sink, FormatCharMode formatMode, FormatString fmt, co } formatArgIndex = formatSpec.position; } + if (formatArgIndex >= Size) { + result.status = FudStatus::FormatInvalid; + return result; + } auto argResult{std::visit( [&](const auto& arg) -> FormatResult { return format(sink, formatMode, formatSpec, arg); }, args[formatArgIndex])}; @@ -451,7 +458,6 @@ FormatResult vFormat(Sink& sink, FormatCharMode formatMode, FormatString fmt, co if (!formatSpec.takesPosition()) { argIndex++; argIndex += static_cast(formatSpec.takesWidth); - argIndex += static_cast(formatSpec.takesPrecision); } } -- cgit v1.2.3