mirror of
https://github.com/nlohmann/json.git
synced 2026-10-02 20:50:32 +00:00
* Re-amalgamate single_include after #5737 #5737 changed sources under include/ without regenerating single_include, so the single header on develop is out of date. This commit only runs make amalgamate. Signed-off-by: Niels Lohmann <mail@nlohmann.me> * Suppress GCC's false -Warray-bounds error in set_parents() with JSON_DIAGNOSTICS With JSON_DIAGNOSTICS, GCC 13 to 15 report a false -Warray-bounds error at -O3 when set_parents() is inlined right after a non-container value (e.g., a string) was created: the std::map access in the object branch is checked against the string allocation although m_type rules that branch out. GCC 15 fixed the pattern from #4819 but not this one. Suppress -Warray-bounds around set_parents() only, and add a regression test that is compiled with -O3 -Werror=array-bounds on GCC. Fixes #5742 Signed-off-by: Niels Lohmann <mail@nlohmann.me> * Fix the false -Warray-bounds error by setting the type after the value The pragma around set_parents() is no longer needed: the base branch (#5585) creates a value before setting its type. Before, the type of a new string was stored first, so GCC had to assume that operator new could change it again, kept the object branch of the inlined set_parents() alive, and checked it against the string's allocation. Rewriting set_parents() itself (if/else instead of switch) does not help. Verified with Docker GCC 12.5, 13, 14, 15.3 and 16.2: the regression test builds and passes without the pragma, and fails to build on develop. Signed-off-by: Niels Lohmann <mail@nlohmann.me> --------- Signed-off-by: Niels Lohmann <mail@nlohmann.me>