incubator-stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Eric Lemings" <Eric.Lemi...@roguewave.com>
Subject STDCXX-600
Date Wed, 23 Jul 2008 22:09:54 GMT
 
FYI-type stuff.

I've been at this issue for the past couple hours.  Here's what I've
found so far.

My basic test case looks like this:

#include <exceptions>
#include <stdexcept>
 
int main () {
    try {
        // throw statement (see below)
    } catch (std::exception&) {
    } catch (...) {
    }

    return 0;
}

The following "throw statements" all throw exceptions that are not
getting caught by the compiler's runtime libraries:

a.	_RW::__rw_throw (_RWSTD_ERROR_OUT_OF_RANGE, _RWSTD_FUNC
("main()"), 1, 0);
b.    _RW::__rw_throw_proc (_RWSTD_ERROR_OUT_OF_RANGE, "what");

No clue yet why they are not caught.

The following "throw statement" however is caught properly:

c.    char* what = "what"; throw (_STD::out_of_rang&)_STD::out_of_range
()._C_assign (what, 0);

Both of the first throw statements ultimately call the last throw
statement so my current guess is that the problem has something to do
with the internal what buffer.

Brad.

Mime
View raw message