From 3717a2b13287cc812321d1d4cf53f5e6b9d47454 Mon Sep 17 00:00:00 2001 From: levlam Date: Tue, 24 Jul 2018 18:20:59 +0300 Subject: [PATCH] Do not use ScopeGuard to not unblock Client::receive by exception. GitOrigin-RevId: e5ae94129923da1ea17688860c9d2295d7775b90 --- td/telegram/Client.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/td/telegram/Client.cpp b/td/telegram/Client.cpp index 663ccc9a..3d0bc9db 100644 --- a/td/telegram/Client.cpp +++ b/td/telegram/Client.cpp @@ -16,7 +16,6 @@ #include "td/utils/port/Fd.h" #include "td/utils/port/Poll.h" #include "td/utils/port/thread.h" -#include "td/utils/ScopeGuard.h" #include #include @@ -216,10 +215,10 @@ class Client::Impl final { Response receive(double timeout) { auto is_locked = receive_lock_.exchange(true); CHECK(!is_locked); - SCOPE_EXIT { - receive_lock_.exchange(false); - }; - return receive_unlocked(timeout); + auto response = receive_unlocked(timeout); + is_locked = receive_lock_.exchange(false); + CHECK(is_locked); + return response; } Impl(const Impl &) = delete;