message catalog assert/crash after opening multiple
---------------------------------------------------

                 Key: STDCXX-542
                 URL: https://issues.apache.org/jira/browse/STDCXX-542
             Project: C++ Standard Library
          Issue Type: Bug
          Components: 22. Localization
         Environment: Windows
            Reporter: Travis Vitek


The below code asserts/crashes reliably on windows, but runs to completion on 
at least one other platform. Note that I copied the rwstdmessages.dll from the 
examples directory to simplify the testcase.

C:\build\stdcxx\build\msvc-8.0\15d\tests>type t.cpp
#include <iostream>
#include <locale>
#include <cassert>

// note same problem occurs even if catalog files are
// different.
#ifdef _WIN32
#  define CATALOG0 "rwstdmessages.dll"
#  define CATALOG1 "rwstdmessages.dll"
#else
#  define CATALOG0 "./rwstdmessages.cat"
#  define CATALOG1 "./rwstdmessages.cat"
#endif

int main (int argc, char *argv[])
{
    typedef std::messages<char> messagesT;

    const std::locale loc;

    const messagesT& msgs =
        std::use_facet<messagesT>(loc);

    const messagesT::catalog cat0 =
        msgs.open (CATALOG0, loc);

    assert(! (cat0 < 0)); // ensure open succeeded

    const messagesT::catalog cat1 =
        msgs.open (CATALOG1, loc);

    assert(! (cat1 < 0)); // ensure open succeeded

    msgs.close (cat1); // crash/assert here
    msgs.close (cat0);

    return 0;
}
C:\build\stdcxx\build\msvc-8.0\15d\tests>t
C:\build\stdcxx\include\rw/_iterbase.h:436: class __rw::__rw_cat *&__thiscall 
__rw::__rw_debug_iter<class std::vector<class __rw::__rw_cat *,class 
std::allocator<class __rw::__rw_cat *> >,class __rw::__rw_cat * *,class 
__rw::__rw_cat * *>::operator *(void) const: Assertion '_C_is_dereferenceable 
()'
 failed.

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.




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

Reply via email to