Skip to content

Remove nullptr safety check from sax_parse functions#5139

Open
risa2000 wants to merge 1 commit intonlohmann:developfrom
risa2000:fix/remove-safety-check-from-sax-parse
Open

Remove nullptr safety check from sax_parse functions#5139
risa2000 wants to merge 1 commit intonlohmann:developfrom
risa2000:fix/remove-safety-check-from-sax-parse

Conversation

@risa2000
Copy link
Copy Markdown
Contributor

@risa2000 risa2000 commented Apr 19, 2026

PR #4873 introduced a safety check in sax_parse functions to catch nullptr passed as SAX parser object, which had been already annotated as __nonnull__ by JSON_HEDLEY_NON_NULL macro.

Compilers (e.g. clang) which respected the non-null annotation tended to eliminate the safety check completely in optimized builds, while compilers which did not, compiled the safety check in. This led to different behaviors across different compilers/platforms and/or build types (debug, release).

This commit reverts PR #4873 to remove this discrepancy. Passing null to non-null annotated parameter is considered to be undefined behavior.

Fixes #5048

PR nlohmann#4873 introduced a safety check in sax_parse functions to catch
nullptr passed as SAX parser object, which had been already annotated by
JSON_HEDLEY_NON_NULL macro.

Compilers (e.g. clang) which respected the non-null annotation tended to
eliminate the safety check completely in optimized builds, while
compilers which did not, compiled the safety check in. This led to
different behaviors accross different compilers/platforms  and/or build
types (debug, release).

This commit reverts PR nlohmann#4873 to remove this discrepancy. Passing null to
non-null annotated parameter is considered to be undefined behavior.

Fixes nlohmann#5048

Signed-off-by: Richard Musil <risa2000x@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

function argument safety check silently optimized out in release build by clang

1 participant