The multiplatform CI reports a test failure:

FAIL: test-mbsnlen.sh
=====================

../../gllib/mbsnlen.c:40:39: runtime error: applying zero offset to null pointer
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior 
../../gllib/mbsnlen.c:40:39 in 
Aborted (core dumped)
FAIL test-mbsnlen.sh (exit status: 134)


This is another instance of NULL + 0, that is
  - forbidden by ISO C 23 6.5.6.(9) / 6.5.7.(9)
  - but retroactively allowed by N3322
    https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3322.pdf
"Retroactive" does not mean now [1].
But after our discussion in December 2023 [2] I had opened a clang bug [3],
and it is fixed in clang 20 or newer. So, I'm now switching the CI's
sanitizer testing to clang 20 or newer, and that test failure is gone.

Bruno

[1] https://lists.gnu.org/archive/html/bug-gnulib/2026-07/msg00211.html
[2] https://lists.gnu.org/archive/html/bug-gnulib/2023-12/msg00061.html
[3] https://github.com/llvm/llvm-project/issues/113062




Reply via email to