From a71c8478fe7bbe349db3fbb6d3ab2d4cf5f74247 Mon Sep 17 00:00:00 2001 From: Oliver Kowalke Date: Fri, 13 Sep 2013 17:38:09 +0200 Subject: [PATCH] make fiber::detach() not inlined --- include/boost/fiber/fiber.hpp | 3 +-- src/fiber.cpp | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/include/boost/fiber/fiber.hpp b/include/boost/fiber/fiber.hpp index d6d32296..7c1ac587 100644 --- a/include/boost/fiber/fiber.hpp +++ b/include/boost/fiber/fiber.hpp @@ -361,8 +361,7 @@ public: void priority( int) BOOST_NOEXCEPT; - void detach() BOOST_NOEXCEPT - { impl_.reset(); } + void detach() BOOST_NOEXCEPT; void join(); diff --git a/src/fiber.cpp b/src/fiber.cpp index e6d1914e..f7f4243c 100644 --- a/src/fiber.cpp +++ b/src/fiber.cpp @@ -69,6 +69,21 @@ fiber::join() impl_.reset(); } +void +fiber::detach() BOOST_NOEXCEPT +{ + BOOST_ASSERT( impl_); + + if ( ! joinable() ) + { + boost::throw_exception( + fiber_resource_error( + system::errc::invalid_argument, "boost fiber: fiber not joinable") ); + } + + impl_.reset(); +} + void fiber::interrupt() BOOST_NOEXCEPT {