https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123918

--- Comment #3 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <[email protected]>:

https://gcc.gnu.org/g:31ca0008418821367eaec1fa7750c18442d18c5e

commit r16-7253-g31ca0008418821367eaec1fa7750c18442d18c5e
Author: Jakub Jelinek <[email protected]>
Date:   Tue Feb 3 09:18:34 2026 +0100

    c++: Don't call cpp_translate_string on NULL string [PR123918]

    My P2246R1 patch caused diagnostics reported by running ubsan
    instrumented compiler on cpp26/static_assert1.C - if len is 0,
    we don't bother to allocate msg, so it stays NULL, and when I've added
    cpp_translate_string call, that can invoke memcpy (something, NULL, 0);
    in that case.
    While that is no longer UB in C2Y since N3322, libsanitizer doesn't
    know that yet and reports it anyway.
    While we could just do
          if (len)
            {
    ...
            }
          else
            msg = "";
    there is really no point in trying to translate "" and allocate memory
    for that, so the following patch instead by passes that translation for
    len == 0.

    2026-02-03  Jakub Jelinek  <[email protected]>

            PR c++/123918
            * semantics.cc (cexpr_str::extract): Bypass cpp_translate_string
            for len == 0.

Reply via email to