ext/boost/thread/pthread/once.hpp in passenger-3.0.0 vs ext/boost/thread/pthread/once.hpp in passenger-3.0.1

- old
+ new

@@ -8,10 +8,11 @@ // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include <boost/thread/detail/config.hpp> +#include <boost/config.hpp> #include <pthread.h> #include <boost/assert.hpp> #include "pthread_mutex_scoped_lock.hpp" #include <boost/thread/pthread/pthread_mutex_scoped_lock.hpp> @@ -56,20 +57,24 @@ while(flag.epoch<=being_initialized) { if(flag.epoch==uninitialized_flag) { flag.epoch=being_initialized; +#ifndef BOOST_NO_EXCEPTIONS try { +#endif pthread::pthread_mutex_scoped_unlock relocker(&detail::once_epoch_mutex); f(); +#ifndef BOOST_NO_EXCEPTIONS } catch(...) { flag.epoch=uninitialized_flag; BOOST_VERIFY(!pthread_cond_broadcast(&detail::once_epoch_cv)); throw; } +#endif flag.epoch=--detail::once_global_epoch; BOOST_VERIFY(!pthread_cond_broadcast(&detail::once_epoch_cv)); } else {