> -----Original Message----- > From: Eric Lemings [mailto:[EMAIL PROTECTED] > Sent: Wednesday, July 23, 2008 4:10 PM > To: [email protected] > Subject: STDCXX-600 > > ... > > 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.
Actually, the second/"b" case above doesn't even use the internal what buffer. So it's not that. So I'm thinking it may be a compiler bug: throwing an exception from different namespaces; i.e. in this case, throwing a `std' exception from a `__rw' function. I built and ran the test case with a more recent version of gcc (4.3) and it works fine. Brad.
