diff --git a/include/fmt/core.h b/include/fmt/core.h index 898d447d..0ae61d64 100644 --- a/include/fmt/core.h +++ b/include/fmt/core.h @@ -1092,7 +1092,7 @@ template class format_arg_store { basic_format_arg>; // If the arguments are not packed, add one more element to mark the end. - value_type data_[num_args + (!is_packed || num_args == 0 ? 1 : 0)]; + value_type data_[num_args + (num_args == 0 ? 1 : 0)]; friend class basic_format_args; diff --git a/include/fmt/format.h b/include/fmt/format.h index e03462b5..b40e5d69 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -1260,9 +1260,8 @@ void arg_map::init(const basic_format_args& args) { if (arg_type == internal::named_arg_type) push_back(args.values_[i]); } } - for (int i = 0;; ++i) { + for (int i = 0, n = args.max_size(); i < n; ++i) { auto type = args.args_[i].type_; - if (type == internal::none_type) return; if (type == internal::named_arg_type) push_back(args.args_[i].value_); } }