You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@stdcxx.apache.org by "Martin Sebor (JIRA)" <ji...@apache.org> on 2008/05/15 22:14:55 UTC
[jira] Updated: (STDCXX-342) [Solaris]
std::locale("/path/to/valid/locale") throws
[ https://issues.apache.org/jira/browse/STDCXX-342?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martin Sebor updated STDCXX-342:
--------------------------------
Component/s: (was: Locales)
22. Localization
Severity: Runtime Error
Affects Version/s: 4.1.4
4.2.0
4.2.1
Fix Version/s: 4.2.2
Remaining Estimate: 4h
Original Estimate: 4h
Marked all released versions as affected.
Target 4.2.2.
> [Solaris] std::locale("/path/to/valid/locale") throws
> -----------------------------------------------------
>
> Key: STDCXX-342
> URL: https://issues.apache.org/jira/browse/STDCXX-342
> Project: C++ Standard Library
> Issue Type: Bug
> Components: 22. Localization
> Affects Versions: 4.1.2, 4.1.3, 4.1.4, 4.2.0, 4.2.1
> Environment: Solaris
> Reporter: Martin Sebor
> Fix For: 4.2.2
>
> Original Estimate: 4h
> Remaining Estimate: 4h
>
> The locale ctors that take a locale name can't deal with absolute pathnames on Solaris (see the test case below). That's because the Solaris locale category separator is the same as a path separator (i.e., the forward slash character) and the ctors do not distinguish one from the other.
> $ cat t.cpp && make t && LC_ALL=../nls/en_US.ISO-8859-1 ../bin/locale && ./t `cd ../nls && pwd`/en_US.ISO-8859-1
> #include <locale>
> int main (int, char *argv[])
> {
> (void)std::locale (argv [1]);
> }
> gcc -c -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG -D_RWSTD_USE_CONFIG -I/build/sebor/dev/stdlib/include -I/build/sebor/gcc-4.1.0-11s/include -I/build/sebor/dev/stdlib/examples/include -pedantic -nostdinc++ -g -W -Wall -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long t.cpp
> gcc t.o -o t -L/build/sebor/gcc-4.1.0-11s/lib -lstd11s -lsupc++ -lm
> LANG=C
> LC_CTYPE="../nls/en_US.ISO-8859-1"
> LC_COLLATE="../nls/en_US.ISO-8859-1"
> LC_TIME="../nls/en_US.ISO-8859-1"
> LC_MONETARY="../nls/en_US.ISO-8859-1"
> LC_NUMERIC="../nls/en_US.ISO-8859-1"
> LC_MESSAGES="../nls/en_US.ISO-8859-1"
> LC_ALL=../nls/en_US.ISO-8859-1
> terminate called after throwing an instance of 'std::runtime_error'
> what(): /build/sebor/dev/stdlib/src/locale_combine.cpp:639: std::locale::locale(const char*): bad locale name: "/build/sebor/gcc-4.1.0-11s/nls/en_US.ISO-8859-1"
> Abort (core dumped)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.