From d753f53e68f50772f1ffa186cfbba1c11587f6c5 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 1efe3e493..63dd17e9f 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 @@ -308,7 +309,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; @@ -679,7 +680,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 dedc2a7ad..58d0aaa76 100644 --- a/single_include/nlohmann/json.hpp +++ b/single_include/nlohmann/json.hpp @@ -7768,6 +7768,7 @@ NLOHMANN_JSON_NAMESPACE_END +#include // min #include #include // string #include // enable_if_t @@ -9836,7 +9837,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; @@ -10207,7 +10208,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)); } }