From 03b037e184368e77da75063228582f441cab4e7e Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Tue, 8 Sep 2026 19:48:39 +0200 Subject: [PATCH] Use (std::min)(len, reserve_cap) instead of a ternary in start_array() Addresses review feedback from @gregmarr on PR #5476. Signed-off-by: Niels Lohmann --- include/nlohmann/detail/input/json_sax.hpp | 5 +++-- single_include/nlohmann/json.hpp | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/include/nlohmann/detail/input/json_sax.hpp b/include/nlohmann/detail/input/json_sax.hpp index 5bee91009..60c468f30 100644 --- a/include/nlohmann/detail/input/json_sax.hpp +++ b/include/nlohmann/detail/input/json_sax.hpp @@ -8,6 +8,7 @@ #pragma once +#include // min #include #include // string #include // enable_if_t @@ -312,7 +313,7 @@ class json_sax_dom_parser // by max_size(), unlike e.g. std::vector) cannot trigger an oversized // allocation for a small or truncated input constexpr std::size_t reserve_cap = 16384; - ref_stack.back()->m_data.m_value.array->reserve(len < reserve_cap ? len : reserve_cap); + ref_stack.back()->m_data.m_value.array->reserve((std::min)(len, reserve_cap)); } return true; @@ -701,7 +702,7 @@ class json_sax_dom_callback_parser // by max_size(), unlike e.g. std::vector) cannot trigger an oversized // allocation for a small or truncated input constexpr std::size_t reserve_cap = 16384; - ref_stack.back()->m_data.m_value.array->reserve(len < reserve_cap ? len : reserve_cap); + ref_stack.back()->m_data.m_value.array->reserve((std::min)(len, reserve_cap)); } } diff --git a/single_include/nlohmann/json.hpp b/single_include/nlohmann/json.hpp index e3bf4e7b0..6eb006b68 100644 --- a/single_include/nlohmann/json.hpp +++ b/single_include/nlohmann/json.hpp @@ -7892,6 +7892,7 @@ NLOHMANN_JSON_NAMESPACE_END +#include // min #include #include // string #include // enable_if_t @@ -11025,7 +11026,7 @@ class json_sax_dom_parser // by max_size(), unlike e.g. std::vector) cannot trigger an oversized // allocation for a small or truncated input constexpr std::size_t reserve_cap = 16384; - ref_stack.back()->m_data.m_value.array->reserve(len < reserve_cap ? len : reserve_cap); + ref_stack.back()->m_data.m_value.array->reserve((std::min)(len, reserve_cap)); } return true; @@ -11414,7 +11415,7 @@ class json_sax_dom_callback_parser // by max_size(), unlike e.g. std::vector) cannot trigger an oversized // allocation for a small or truncated input constexpr std::size_t reserve_cap = 16384; - ref_stack.back()->m_data.m_value.array->reserve(len < reserve_cap ? len : reserve_cap); + ref_stack.back()->m_data.m_value.array->reserve((std::min)(len, reserve_cap)); } }