From aa391dc0a56f8409e2e7aca6e7c9a9d766d44ce8 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Fri, 11 Sep 2026 17:55:46 +0200 Subject: [PATCH] Fix two develop CI regressions: dump() nodiscard warning and binary-reader const-correctness (#5520) * Discard dump()'s [[nodiscard]] return value in an exception-only check CHECK_THROWS_WITH_AS(j.dump(), ...) called dump() only to trigger and catch the exception, but never used the return value. dump() is warn_unused_result, so GCC's pedantic build (-Werror --all-warnings) rejected it as -Werror=unused-result, breaking ci_test_gcc. Wrapped in utils::ignore_return_value(), matching every other such call in this file. Signed-off-by: Niels Lohmann * Mark container_frame top as const in CBOR/UBJSON readers clang-tidy's misc-const-correctness flagged these on PR #5520's CI: the BSON sibling copy was already const, but these two were left mutable even though only container_stack.back().remaining is ever written. Signed-off-by: Niels Lohmann --------- Signed-off-by: Niels Lohmann --- include/nlohmann/detail/input/binary_reader.hpp | 4 ++-- single_include/nlohmann/json.hpp | 4 ++-- tests/src/unit-serialization.cpp | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/nlohmann/detail/input/binary_reader.hpp b/include/nlohmann/detail/input/binary_reader.hpp index efa93070d..e0343fd0b 100644 --- a/include/nlohmann/detail/input/binary_reader.hpp +++ b/include/nlohmann/detail/input/binary_reader.hpp @@ -1434,7 +1434,7 @@ class binary_reader // a copy, not a reference: it must stay valid across the // pop_back() below, which destroys the container_stack element // it would otherwise alias - container_frame top = container_stack.back(); + const container_frame top = container_stack.back(); bool at_end = false; if (top.remaining != npos) @@ -2211,7 +2211,7 @@ class binary_reader // would otherwise alias. for (;;) { - container_frame top = container_stack.back(); + const container_frame top = container_stack.back(); if (top.remaining != npos) { diff --git a/single_include/nlohmann/json.hpp b/single_include/nlohmann/json.hpp index 150118a1c..3b2233a57 100644 --- a/single_include/nlohmann/json.hpp +++ b/single_include/nlohmann/json.hpp @@ -13383,7 +13383,7 @@ class binary_reader // a copy, not a reference: it must stay valid across the // pop_back() below, which destroys the container_stack element // it would otherwise alias - container_frame top = container_stack.back(); + const container_frame top = container_stack.back(); bool at_end = false; if (top.remaining != npos) @@ -14160,7 +14160,7 @@ class binary_reader // would otherwise alias. for (;;) { - container_frame top = container_stack.back(); + const container_frame top = container_stack.back(); if (top.remaining != npos) { diff --git a/tests/src/unit-serialization.cpp b/tests/src/unit-serialization.cpp index eddf59f2c..511108c64 100644 --- a/tests/src/unit-serialization.cpp +++ b/tests/src/unit-serialization.cpp @@ -469,7 +469,7 @@ TEST_CASE("serialization of strings (bulk fast path)") SECTION("invalid UTF-8 handling is unaffected by the fast path") { const json j = std::string("valid\xff" "more"); - CHECK_THROWS_WITH_AS(j.dump(), "[json.exception.type_error.316] invalid UTF-8 byte at index 5: 0xFF", json::type_error&); + CHECK_THROWS_WITH_AS(utils::ignore_return_value(j.dump()), "[json.exception.type_error.316] invalid UTF-8 byte at index 5: 0xFF", json::type_error&); CHECK(j.dump(-1, ' ', false, json::error_handler_t::replace) == "\"valid\xef\xbf\xbd" "more\""); CHECK(j.dump(-1, ' ', true, json::error_handler_t::replace) == "\"valid\\ufffdmore\""); CHECK(j.dump(-1, ' ', false, json::error_handler_t::ignore) == "\"validmore\"");