input/async: use std::exchange()

This commit is contained in:
Max Kellermann 2017-09-19 19:55:16 +02:00
parent 99a447dff5
commit 513212c5e8

View File

@ -50,8 +50,7 @@ AsyncInputStream::~AsyncInputStream()
void void
AsyncInputStream::SetTag(Tag *_tag) noexcept AsyncInputStream::SetTag(Tag *_tag) noexcept
{ {
delete tag; delete std::exchange(tag, _tag);
tag = _tag;
} }
void void
@ -77,11 +76,9 @@ AsyncInputStream::Resume()
void void
AsyncInputStream::Check() AsyncInputStream::Check()
{ {
if (postponed_exception) { if (postponed_exception)
auto e = std::move(postponed_exception); std::rethrow_exception(std::exchange(postponed_exception,
postponed_exception = std::exception_ptr(); std::exception_ptr()));
std::rethrow_exception(e);
}
} }
bool bool
@ -154,9 +151,7 @@ AsyncInputStream::SeekDone() noexcept
Tag * Tag *
AsyncInputStream::ReadTag() AsyncInputStream::ReadTag()
{ {
Tag *result = tag; return std::exchange(tag, nullptr);
tag = nullptr;
return result;
} }
bool bool