[Bug libstdc++/70493] std::setlocale("") throws exception
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Jul 13 11:15:56 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70493
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution|--- |WONTFIX
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Libstdc++ has no idea why the locale name was invalid. When you use the empty
string "" it constructs a locale name from the environment and then calls
newlocale from the C library. newlocale returns (locale_t)0 and sets ENOENT,
which according to POSIX means "For any of the categories in category_mask, the
locale data is not available" (or for the GNU C library, "locale is not a
string pointer referring to a valid locale").
Unless libstdc++ is going to iteratively try creating a locale from each of the
LC_* environment variables to see which one failed, it can't really give you
any better information. That doesn't seem worth the effort (and increase in
code size), sorry.
More information about the Gcc-bugs
mailing list