[ https://issues.apache.org/jira/browse/STDCXX-665?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12559237#action_12559237 ]
vitek edited comment on STDCXX-665 at 1/15/08 3:34 PM: -------------------------------------------------------------- Yeah, if I would have looked I would have seen __rw_setlocale. This does make me feel a little better about option (4). This change would allow us to successfully open a message catalog when the locale provided to std::messages<T>::open() was not the C/POSIX locale. Any proposal for what we would do if this is not the case? Maybe just fail? Here is a test that I believe would fail the second assert because AIX requires LC_MESSAGES to be set to something other than "C". const std::locale classic (std::locale::classic ()); const std::locale en_US ("en_US"); const std::messages<char>& m = std::use_facet<std::messages<char> >(classic); // this would work because we would call setlocale (LC_MESSAGES, "en_US") // internally std::messages_base::catalog c1 = m.open ("catalog", en_US); assert (! (c1 < 0)); m.close (c1); // this would not work because we would call setlocale (LC_MESSAGES, "C") // internally, and the NLSPATH lookup is disabled std::messages_base::catalog c2 = m.open ("catalog", classic); assert (! (c2 < 0)); m.close (c2); In that case, I feel like I should use all of 1, 2 and 4. was (Author: vitek): Yeah, if I would have looked I would have seen __rw_setlocale. While does make me feel better about option (4). This change would allow us to successfully open a message catalog when the locale provided to std::messages<T>::open() was not the C/POSIX locale. Any proposal for what we would do for this case? Maybe just fail? const std::locale classic (std::locale::classic ()); const std::locale en_US ("en_US"); const std::messages<char>& m = std::use_facet<std::messages<char> >(classic); // this would work because we would call setlocale (LC_MESSAGES, "en_US") // internally std::messages_base::catalog c1 = m.open ("catalog", en_US); assert (0 < c1); m.close (c1); // this would not work because we would call setlocale (LC_MESSAGES, "C") // internally, and the NLSPATH lookup is disabled std::messages_base::catalog c2 = m.open ("catalog", classic); assert (0 < c2); m.close (c2); In that case, I feel like I should use all of 1, 2 and 4. > [IBM XLC++ 9.0/AIX 5.3] 22.locale.messages fails with assertions > ---------------------------------------------------------------- > > Key: STDCXX-665 > URL: https://issues.apache.org/jira/browse/STDCXX-665 > Project: C++ Standard Library > Issue Type: Bug > Components: Tests > Affects Versions: 4.2.0 > Reporter: Travis Vitek > Assignee: Travis Vitek > Fix For: 4.2.1 > > Attachments: stdcxx-665.patch > > > Currently only single threaded builds show this problem > NAME STATUS WARN ASSERTS FAILED PERCNT USER > SYS REAL > 22.locale.messages 0 0 268 106 60% 0.090 > 0.640 3.960 -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.