RFR: 8355077: Compiler error at splashscreen_gif.c due to unterminated string initialization

Phil Race prr at openjdk.org
Tue Apr 22 18:25:54 UTC 2025


On Sun, 20 Apr 2025 02:16:50 GMT, Yasumasa Suenaga <ysuenaga at openjdk.org> wrote:

> I tried to build OpenJDK with GCC 15.0.1 on Fedora 42 x86_64, however I saw following error.
> 
> 
> * For target support_native_java.desktop_libsplashscreen_splashscreen_gif.o:
> /home/ysuenaga/github-forked/jdk/src/java.desktop/share/native/libsplashscreen/splashscreen_gif.c:51:41: error: initializer-string for array of ‘char’ truncates NUL terminator but destination lacks ‘nonstring’ attribute (12 chars into 11 available) [-Werror=unterminated-string-initialization]
>    51 | static const char szNetscape20ext[11] = "NETSCAPE2.0";
>       | ^~~~~~~~~~~~~
> cc1: all warnings being treated as errors
> 
> 
> This constant seems to be used to detect Netscape 2.0 extension in GIF image. It should be used to compare with extension block without NUL char, but we should tweak initialization to avoid this error for safety code.

Isn't gcc wrong to complain ?
I'm looking at what is admittedly an old draft of ANSI C 
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
and on p130 it has this where t is the same as the usage in splashscreen.

======
EXAMPLE 8 The declaration

char s[] = "abc", t[3] = "abc";

defines ‘‘plain’’ char array objects s and t whose elements are initialized with character string literals.
This declaration is identical to

      char s[] = { 'a', 'b', 'c', '\0' },
              t[] = { 'a', 'b', 'c' };


=====

-------------

PR Comment: https://git.openjdk.org/jdk/pull/24770#issuecomment-2822131320


More information about the client-libs-dev mailing list