From cdff1db49c449e25309c8afa31c123450791cbbf Mon Sep 17 00:00:00 2001 From: "Zezheng.Li" Date: Thu, 23 Jan 2025 18:39:27 +0800 Subject: [PATCH] f --- include/ylt/coro_io/coro_io.hpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/include/ylt/coro_io/coro_io.hpp b/include/ylt/coro_io/coro_io.hpp index 0e3f313a0..413c86e62 100644 --- a/include/ylt/coro_io/coro_io.hpp +++ b/include/ylt/coro_io/coro_io.hpp @@ -110,10 +110,11 @@ class callback_awaitor_base { set_value(std::forward(args)...); resume(); } - template - void set_value(std::error_code ec, Args &&...args) const { + template + void set_value(std::error_code ec, Args &&arg) const { if constexpr (!std::is_same_v) { - obj->arg_ = {std::move(ec), std::forward(args)...}; + std::get<0>(obj->arg_) = std::move(ec); + std::get<1>(obj->arg_) = std::move(arg); } else { obj->arg_ = std::move(ec); @@ -240,13 +241,13 @@ inline async_simple::coro::Lazy async_io(IO_func io_func, [&obj, weak_lock = std::weak_ptr{lock}]( async_simple::SignalType signalType, async_simple::Signal *signal) { - if (auto ptr = weak_lock.lock(); ptr) { - bool expected = false; - if (!ptr->compare_exchange_strong( - expected, true, std::memory_order_release)) { - detail::cancel(obj); - } + if (auto ptr = weak_lock.lock(); ptr) { + bool expected = false; + if (!ptr->compare_exchange_strong( + expected, true, std::memory_order_release)) { + detail::cancel(obj); } + } }); if (hasCanceled) { asio::dispatch(executor, [handler]() {