Open
Description
Description
As mentioned in php/doc-en#4311, the bind_textdomain_codeset()
function returns false
in some "success" cases because it is only looking at the NULL
returned from the C function. But that NULL
is not necessarily an error, it just means that the codeset has not changed from the default. In particular, you'll get a NULL
from glibc if you query a codeset that hasn't been set yet, and you'll always get NULL
on musl.
According to https://pubs.opengroup.org/onlinepubs/9799919799.2024edition/functions/bind_textdomain_codeset.html, the value of errno
may be a better indicator:
If bind_textdomain_codeset() fails, a null pointer shall be returned and errno shall be set to indicate the error.