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
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.