diff --git a/repertory/librepertory/src/file_manager/open_file.cpp b/repertory/librepertory/src/file_manager/open_file.cpp index 1f278b45..9436dcd7 100644 --- a/repertory/librepertory/src/file_manager/open_file.cpp +++ b/repertory/librepertory/src/file_manager/open_file.cpp @@ -547,9 +547,8 @@ auto open_file::read(std::size_t read_size, std::uint64_t read_offset, return set_api_error(api_error::invalid_operation); } - auto res = check_allocation(); - if (res != api_error::success) { - return res; + if (stop_requested_) { + return set_api_error(api_error::download_stopped); } read_size = @@ -558,6 +557,11 @@ auto open_file::read(std::size_t read_size, std::uint64_t read_offset, return api_error::success; } + auto res = check_allocation(); + if (res != api_error::success) { + return res; + } + const auto read_from_source = [this, &data, &read_offset, &read_size]() -> api_error { return do_io([this, &data, &read_offset, &read_size]() -> api_error {