stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Travis Vitek (JIRA)" <j...@apache.org>
Subject [jira] Created: (STDCXX-571) 22.locale.numpunct.mt fails unexpectedly because of
Date Wed, 26 Sep 2007 21:29:50 GMT
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.


Mime
View raw message