Revert "Allow nested calls to completion handler when using yield_context."
This reverts commit 81242906a5b7dd169667a3a07552d775a7e8662d.
diff --git a/asio/include/asio/impl/spawn.hpp b/asio/include/asio/impl/spawn.hpp
index 2efc1f9..036b66f 100644
--- a/asio/include/asio/impl/spawn.hpp
+++ b/asio/include/asio/impl/spawn.hpp
@@ -19,7 +19,6 @@
#include "asio/associated_allocator.hpp"
#include "asio/associated_executor.hpp"
#include "asio/async_result.hpp"
-#include "asio/detail/atomic_count.hpp"
#include "asio/detail/handler_alloc_helpers.hpp"
#include "asio/detail/handler_cont_helpers.hpp"
#include "asio/detail/handler_invoke_helpers.hpp"
@@ -42,7 +41,6 @@
: coro_(ctx.coro_.lock()),
ca_(ctx.ca_),
handler_(ctx.handler_),
- ready_(0),
ec_(ctx.ec_),
value_(0)
{
@@ -52,23 +50,20 @@
{
*ec_ = asio::error_code();
*value_ = ASIO_MOVE_CAST(T)(value);
- if (--*ready_ == 0)
- (*coro_)();
+ (*coro_)();
}
void operator()(asio::error_code ec, T value)
{
*ec_ = ec;
*value_ = ASIO_MOVE_CAST(T)(value);
- if (--*ready_ == 0)
- (*coro_)();
+ (*coro_)();
}
//private:
shared_ptr<typename basic_yield_context<Handler>::callee_type> coro_;
typename basic_yield_context<Handler>::caller_type& ca_;
Handler handler_;
- atomic_count* ready_;
asio::error_code* ec_;
T* value_;
};
@@ -81,7 +76,6 @@
: coro_(ctx.coro_.lock()),
ca_(ctx.ca_),
handler_(ctx.handler_),
- ready_(0),
ec_(ctx.ec_)
{
}
@@ -89,22 +83,19 @@
void operator()()
{
*ec_ = asio::error_code();
- if (--*ready_ == 0)
- (*coro_)();
+ (*coro_)();
}
void operator()(asio::error_code ec)
{
*ec_ = ec;
- if (--*ready_ == 0)
- (*coro_)();
+ (*coro_)();
}
//private:
shared_ptr<typename basic_yield_context<Handler>::callee_type> coro_;
typename basic_yield_context<Handler>::caller_type& ca_;
Handler handler_;
- atomic_count* ready_;
asio::error_code* ec_;
};
@@ -184,10 +175,8 @@
explicit async_result(detail::coro_handler<Handler, T>& h)
: handler_(h),
- ca_(h.ca_),
- ready_(2)
+ ca_(h.ca_)
{
- h.ready_ = &ready_;
out_ec_ = h.ec_;
if (!out_ec_) h.ec_ = &ec_;
h.value_ = &value_;
@@ -196,8 +185,7 @@
type get()
{
handler_.coro_.reset(); // Must not hold shared_ptr to coro while suspended.
- if (--ready_ != 0)
- ca_();
+ ca_();
if (!out_ec_ && ec_) throw asio::system_error(ec_);
return ASIO_MOVE_CAST(type)(value_);
}
@@ -205,7 +193,6 @@
private:
detail::coro_handler<Handler, T>& handler_;
typename basic_yield_context<Handler>::caller_type& ca_;
- detail::atomic_count ready_;
asio::error_code* out_ec_;
asio::error_code ec_;
type value_;
@@ -219,10 +206,8 @@
explicit async_result(detail::coro_handler<Handler, void>& h)
: handler_(h),
- ca_(h.ca_),
- ready_(2)
+ ca_(h.ca_)
{
- h.ready_ = &ready_;
out_ec_ = h.ec_;
if (!out_ec_) h.ec_ = &ec_;
}
@@ -230,15 +215,13 @@
void get()
{
handler_.coro_.reset(); // Must not hold shared_ptr to coro while suspended.
- if (--ready_ != 0)
- ca_();
+ ca_();
if (!out_ec_ && ec_) throw asio::system_error(ec_);
}
private:
detail::coro_handler<Handler, void>& handler_;
typename basic_yield_context<Handler>::caller_type& ca_;
- detail::atomic_count ready_;
asio::error_code* out_ec_;
asio::error_code ec_;
};
diff --git a/asio/include/asio/version.hpp b/asio/include/asio/version.hpp
index 9def83c..9a32f59 100644
--- a/asio/include/asio/version.hpp
+++ b/asio/include/asio/version.hpp
@@ -18,6 +18,6 @@
// ASIO_VERSION % 100 is the sub-minor version
// ASIO_VERSION / 100 % 1000 is the minor version
// ASIO_VERSION / 100000 is the major version
-#define ASIO_VERSION 101100 // 1.11.0
+#define ASIO_VERSION 101004 // 1.10.4
#endif // ASIO_VERSION_HPP