Fix handling of unpacked args (#437)

This commit is contained in:
Victor Zverovich 2016-12-23 08:24:48 -08:00
parent 1183621867
commit f05888692c
2 changed files with 7 additions and 6 deletions

View File

@ -1538,7 +1538,7 @@ template <typename Context, typename ...Args>
class format_arg_store { class format_arg_store {
private: private:
static const size_t NUM_ARGS = sizeof...(Args); static const size_t NUM_ARGS = sizeof...(Args);
static const bool IS_PACKED = NUM_ARGS <= internal::MAX_PACKED_ARGS; static const bool IS_PACKED = NUM_ARGS < internal::MAX_PACKED_ARGS;
typedef typename Context::char_type char_type; typedef typename Context::char_type char_type;
@ -1552,7 +1552,7 @@ class format_arg_store {
static const uint64_t TYPES = internal::make_type<Args..., void>(); static const uint64_t TYPES = internal::make_type<Args..., void>();
format_arg_store(const Args &... args) format_arg_store(const Args &... args)
: data_{{internal::MakeValue<Context>(args)...}} {} : data_{{internal::MakeArg<Context>(args)...}} {}
const value_type *data() const { return data_.data(); } const value_type *data() const { return data_.data(); }
}; };

View File

@ -1577,10 +1577,11 @@ void print_error(const char *file, int line, const char *format,
} }
#endif #endif
TEST(FormatTest, MaxArgs) { TEST(FormatTest, UnpackedArgs) {
EXPECT_EQ("0123456789abcde", EXPECT_EQ("0123456789abcdefg",
fmt::format("{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}", fmt::format("{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'd', 'e')); 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'd', 'e',
'f', 'g'));
} }
#if FMT_USE_USER_DEFINED_LITERALS #if FMT_USE_USER_DEFINED_LITERALS