stdcxx-dev mailing list archives

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

> -----Original Message-----
> From: Eric Lemings [mailto:Eric.Lemings@roguewave.com] 
> Sent: Wednesday, July 23, 2008 4:10 PM
> To: dev@stdcxx.apache.org
> 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.

Mime
View raw message