[ https://issues.apache.org/jira/browse/STDCXX-571?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Travis Vitek updated STDCXX-571: -------------------------------- Attachment: 22.locale.numpunct.mt.cpp 2007-09-26 Travis Vitek STDCXX-571 * 22.locale.numpunct.mt.cpp (run_test): Use C++ locale to generate test data. This is to avoid any incompatibilities between C and C++ locales. (thread_func): Updated to use changed test data types. > 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 > #include > 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 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.