Thanks for pointing it out! I noticed it too when I tested the change
on Windows but I haven't decided how to deal with it yet. Compilers
often assume that functions with C linkage don't throw exceptions and
generate code that breaks when an exception does end up being thrown.
I think MSVC is one of them, and gcc another. We should probably add
a config test to determine whether a compiler allows exceptions to
pass through C code and only rethrow the exception only when it does.
In the opposite case we'll need to decide how to handle the exception.
Any suggestions?
Martin
Farid Zaripov wrote:
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Wednesday, August 08, 2007 1:24 AM
To: [EMAIL PROTECTED]
Subject: svn commit: r563682 - in
/incubator/stdcxx/trunk/src: once.cpp once.h
Author: sebor
Date: Tue Aug 7 15:24:10 2007
New Revision: 563682
URL: http://svn.apache.org/viewvc?view=rev&rev=563682
Log:
2007-08-07 Martin Sebor <[EMAIL PROTECTED]>
* once.h: New implementation-private header. Declares
__rw_once_t
and __rw_once() for portable, thread-safe one-time
initialization.
* once.cpp: New. Defines the above.
[...]
+ _TRY {
+ func ();
+ }
+ _CATCH (...) {
+ _RWSTD_ATOMIC_PREDECREMENT (init, false);
+ _RETHROW;
The MSVC issues warning on this line:
once.cpp
..\..\..\src\once.cpp(74) : warning C4297: '__rw::__rw_once' : function
assumed not to throw an exception but does
The function is extern "C" and /EHc was specified
+ }
Farid.