mirror of
https://github.com/fmtlib/fmt.git
synced 2024-12-26 00:21:13 +00:00
Test and fix handling of exactly MAX_PACKED_ARGS arguments
This commit is contained in:
parent
969d1cdbdc
commit
87cb2935f8
2
format.h
2
format.h
@ -2665,7 +2665,7 @@ inline void set_types(Value *, const Args & ...) {
|
||||
// argument that marks the end of the list.
|
||||
template <unsigned N>
|
||||
struct ArgArraySize {
|
||||
enum { VALUE = N + (N == 0 || N > ArgList::MAX_PACKED_ARGS ? 1 : 0) };
|
||||
enum { VALUE = N + (N == 0 || N >= ArgList::MAX_PACKED_ARGS ? 1 : 0) };
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -574,6 +574,10 @@ TEST(FormatterTest, ManyArgs) {
|
||||
FormatError, "argument index out of range");
|
||||
EXPECT_THROW_MSG(TestFormat<21>::format("{21}"),
|
||||
FormatError, "argument index out of range");
|
||||
enum { MAX_PACKED_ARGS = fmt::ArgList::MAX_PACKED_ARGS };
|
||||
std::string format_str = fmt::format("{{{}}}", MAX_PACKED_ARGS + 1);
|
||||
EXPECT_THROW_MSG(TestFormat<MAX_PACKED_ARGS>::format(format_str),
|
||||
FormatError, "argument index out of range");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user