Fails with both GCC 16.1.0 and Clang 22.1.8
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../../lame-3.101/libmp3lame -I.. -I../../lame-3.101/include -I../../lame-3.101/libmp3lame -I../../lame-3.101 -I.. -I/ucrt64/include -Wall -pipe -march=nocona -msahf -mtune=generic -O2 -pipe -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong -Wp,-D__USE_MING
W_ANSI_STDIO=1 -MT id3tag.lo -MD -MP -MF .deps/id3tag.Tpo -c ../../lame-3.101/libmp3lame/id3tag.c -DDLL_EXPORT -DPIC -o .libs/id3tag.o
../../lame-3.101/libmp3lame/id3tag.c: In function 'id3tag_set_genre_utf8':
../../lame-3.101/libmp3lame/id3tag.c:661:48: error: passing argument 4 of 'id3v2_add_utf8_lng' from incompatible pointer type [-Wincompatible-pointer-types]
661 | ret = id3v2_add_utf8_lng(gfp, ID_GENRE, 0, text);
| ^~~~
| |
| const short unsigned int *
../../lame-3.101/libmp3lame/id3tag.c:221:81: note: expected 'const char *' but argument is of type c
onst short unsigned int *'
221 | id3v2_add_utf8_lng(lame_t gfp, uint32_t frame_id, char const *desc, char const *text);
| ~~~~~~~~~~~~^~~~
../../lame-3.101/libmp3lame/id3tag.c: In function 'id3tag_set_textinfo_utf8':
../../lame-3.101/libmp3lame/id3tag.c:1141:56: error: passing argument 3 of 'id3tag_set_userinfo_utf' from incompatible pointer type [-Wincompatible-pointer-types]
1141 | return id3tag_set_userinfo_utf8(gfp, frame_id, text);
| ^~~~
| |
| const short unsigned int *
../../lame-3.101/libmp3lame/id3tag.c:1094:63: note: expected 'const char *' but argument is of type 'const short unsigned int *'
1094 | id3tag_set_userinfo_utf8(lame_t gfp, uint32_t id, char const *fieldvalue)
| ~~~~~~~~~~~~^~~~~~~~~~
../../lame-3.101/libmp3lame/id3tag.c:1147:53: error: passing argument 4 of 'id3v2_add_utf8_lng' from incompatible pointer type [-Wincompatible-pointer-types]
1147 | return id3v2_add_utf8_lng(gfp, frame_id, 0, text);
| ^~~~
| |
| const short unsigned int *
../../lame-3.101/libmp3lame/id3tag.c:1057:81: note: expected 'const char *' but argument is of type
'const short unsigned int *'
1057 | id3v2_add_utf8_lng(lame_t gfp, uint32_t frame_id, char const *desc, char const *text)
| ~~~~~~~~~~~~^~~~
../../lame-3.101/libmp3lame/id3tag.c:1150:50: error: passing argument 3 of 'id3v2_add_utf8_lng' from incompatible pointer type [-Wincompatible-pointer-types]
1150 | return id3v2_add_utf8_lng(gfp, frame_id, text, 0);
| ^~~~
| |
| const short unsigned int *
../../lame-3.101/libmp3lame/id3tag.c:1057:63: note: expected 'const char *' but argument is of type 'const short unsigned int *'
1057 | id3v2_add_utf8_lng(lame_t gfp, uint32_t frame_id, char const *desc, char const *text)
| ~~~~~~~~~~~~^~~~
../../lame-3.101/libmp3lame/id3tag.c:1153:50: error: passing argument 3 of 'id3v2_add_utf8_lng' from incompatible pointer type [-Wincompatible-pointer-types]
1153 | return id3v2_add_utf8_lng(gfp, frame_id, text, 0); /* iTunes expects WFED to be a text frame */
| ^~~~
| |
| const short unsigned int *
../../lame-3.101/libmp3lame/id3tag.c:1057:63: note: expected 'const char *' but argument is of type 'const short unsigned int *'
1057 | id3v2_add_utf8_lng(lame_t gfp, uint32_t frame_id, char const *desc, char const *text)
| ~~~~~~~~~~~~^~~~
../../lame-3.101/libmp3lame/id3tag.c:1162:53: error: passing argument 4 of 'id3v2_add_utf8_lng' from incompatible pointer type [-Wincompatible-pointer-types]
1162 | return id3v2_add_utf8_lng(gfp, frame_id, 0, text);
| ^~~~
| |
| const short unsigned int *
../../lame-3.101/libmp3lame/id3tag.c:1057:81: note: expected 'const char *' but argument is of type 'const short unsigned int *'
1057 | id3v2_add_utf8_lng(lame_t gfp, uint32_t frame_id, char const *desc, char const *text)
Those utf-8 code paths looks untested to me, it's mixing utf16 and utf8 in various places. I'd suggest reverting it.
Last edit: lazka 2026-07-10
Fix committed in r6542, patch in [patches:#102].
New release upcoming.
Related
Patches:
#102