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

--- Comment #2 from Sebastian Huber <sebastian.hu...@embedded-brains.de> ---
I think this is a false positive warning.

The relevant code is:

        for ( i = 0;
                 name_size
              && (c = msdos_get_valid_utf16_filename_character ( long_name[i])
);
              ++i ) {
          long_name[i]   = c;
          returned_size += MSDOS_NAME_LFN_BYTES_PER_CHAR;
          name_size     -= MSDOS_NAME_LFN_BYTES_PER_CHAR;
        }
        if ( name_size == UTF16_NULL_SIZE && c == UTF16_NULL ) {
          long_name[i]   = c; /* line 452 */
          returned_size += MSDOS_NAME_LFN_BYTES_PER_CHAR;
          name_size     -= MSDOS_NAME_LFN_BYTES_PER_CHAR;
        }

With

#define UTF16_NULL_SIZE       2

In case name_size == 2, then c =
msdos_get_valid_utf16_filename_character(long_name[i]) must be called at least
once.

Reply via email to