You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by "Martin Sebor (JIRA)" <ji...@apache.org> on 2007/09/27 06:51:50 UTC

[jira] Commented: (STDCXX-571) 22.locale.numpunct.mt fails unexpectedly because of

    [ https://issues.apache.org/jira/browse/STDCXX-571?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12530628 ] 

Martin Sebor commented on STDCXX-571:
-------------------------------------

Thanks, Travis. It looks like you attached the modified file instead of a patch. Also, your Change Log doesn't mention the new command line options. Could you please attach a patch instead and add a note about the new options to the Change Log?

Btw., is the rest of the Summary supposed to be left as an exercise for the reader or are you still wordsmithing? ;-)

> 22.locale.numpunct.mt fails unexpectedly because of 
> ----------------------------------------------------
>
>                 Key: STDCXX-571
>                 URL: https://issues.apache.org/jira/browse/STDCXX-571
>             Project: C++ Standard Library
>          Issue Type: Improvement
>          Components: Tests
>    Affects Versions: 4.2
>            Reporter: Travis Vitek
>            Priority: Minor
>             Fix For: 4.2.1
>
>         Attachments: 22.locale.numpunct.mt.cpp
>
>
> The current numpunct.mt test fails on at least one platform because the initialization code and the test code use two different methods for retrieving the numpunct data. The run_test function uses std::localeconv(), and thread_func uses the C++ locale numpunct facet. In most situations this isn't a problem.
> Unfortunately, due to incompatibilities between the C and C++ locale details, the thousands seperator is different with the "C" locale. For C++ it is ',' and for C it is the empty string. Here is a quick test to show the problem that the test sees.
> #include <clocale>
> #include <locale>
> int main()
> {
>     if (!std::setlocale (LC_ALL, "C"))
>         return 1;
>     const std::lconv* const pconv = std::localeconv ();
>     // test against the specialization directly
>     const std::numpunct<char> np(0);
>     assert (*pconv->decimal_point == np.decimal_point ());
>     assert (*pconv->thousands_sep == np.thousands_sep ());
>     return 0;
> }
> The test should be enhanced to use the C++ locale for both run_test and thread_func.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.