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