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.