[MPlayer-dev-eng] [PATCH] Fix compilation errors due to a wrong declaration of iconv() on OS/2
KO Myung-Hun
komh78 at gmail.com
Wed Jan 22 12:54:25 EET 2025
Hi/2.
Alexander Strasser wrote:
> On 2025-01-17 22:07 +0900, KO Myung-Hun wrote:
>> Alexander Strasser wrote:
>>> Hi/2 KO Myung-Hun :)
>>>
>>> On 2025-01-09 14:36 +0900, KO Myung-Hun wrote:
>>>> Recent compilers such as GCC 14 generate errors for implicit casts.
>>>> ---
>>>> configure | 3 ++-
>>>> osdep/include/iconv.h | 32 ++++++++++++++++++++++++++++++++
>>>> 2 files changed, 34 insertions(+), 1 deletion(-)
>>>> create mode 100644 osdep/include/iconv.h
>>>>
>>>> diff --git a/configure b/configure
>>>> index 753e14446..e6634bba2 100755
>>>> --- a/configure
>>>> +++ b/configure
>>>> @@ -1961,7 +1961,8 @@ if os2 ; then
>>>> test -n "$ld_static" && ld_static='-Wl,-static'
>>>> # OS/2 linker does not support a thin archive. Remove 'T' flag.
>>>> _arflags=$(echo $_arflags | tr -d T)
>>>> - extra_cflags="$extra_cflags -D_EMX_SOURCE"
>>>> + # -Iosdep/include is for MPlayer, -I../osdep/include is for FFmpeg
>>>> + extra_cflags="$extra_cflags -D_EMX_SOURCE -Iosdep/include -I../osdep/include"
>>>> fi
>>>
>>> It's a bit unusual compared to the normal use of headers in osdep/ .
>>> It should probably work OK though.
>>>
>>> Maybe we should actually change it in the rest of the code base to
>>> work this way, but that would require more careful planning, because
>>> than it's no more possible to select the usage per os, like you do
>>> here, which is also a bit different.
>>>
>>> Or at some point we switch it to the FFmpeg compat scheme. Dunno...
>>>
>>
>> Then how about this patch? It's more simple.
>
> Fine for me if it is fine for you :)
>
> In general the GCC pointer cast warnings are legit.
> If you disable them you will not see them when developing.
>
> It would still cause breakage (detected sooner or later) if
> the code is common between OS/2 and some other platform, but
> for OS/2 specific code new pointer cast warnings would go
> unnoticed.
>
> I think I prefer your previous solution, because it is a
> bit better in guarding breakage.
>
'-Wno-error=' does not disable warnings at all, instead it does not
treat a warning as an error. That is, this patch makes gcc behave as
before GCC14. The following is the output while compiling with this patch:
-----
sub/subreader.c: In function 'subcp_recode':
sub/subreader.c:1333:34: warning: passing argument 2 of 'iconv' from
incompatible pointer type [-Wincompatible-pointer-types]
1333 | if (iconv(icdsc, &ip, &ileft,
| ^~~
| |
| char **
In file included from sub/subreader.c:55:
g:/usr/include/iconv.h:37:31: note: expected 'const char **' but
argument is of type 'char **'
37 | extern size_t iconv (iconv_t, const char **, size_t *, char **,
size_t *);
| ^~~~~~~~~~~~~
-----
I think you thought the '-Wno-xxx' form which disabled warnings.
> You are the maintainer of MPlayer on OS/2, you have the final say.
Ok, I'll apply this patch soon.
Thanks a lot!
--
KO Myung-Hun
Korean OS/2 User Community : https://www.os2.kr/
More information about the MPlayer-dev-eng
mailing list