diff --git a/repertory/librepertory/src/file_manager/open_file.cpp b/repertory/librepertory/src/file_manager/open_file.cpp index ab1b4160..9c28cf03 100644 --- a/repertory/librepertory/src/file_manager/open_file.cpp +++ b/repertory/librepertory/src/file_manager/open_file.cpp @@ -358,6 +358,19 @@ auto open_file::native_operation( return api_error::download_stopped; } + if (new_file_size > fsi_.size) { + auto res = + cache_size_mgr::instance().expand(new_file_size - fsi_.size, true); + if (res != api_error::success) { + return res; + } + } else if (new_file_size < fsi_.size) { + auto res = cache_size_mgr::instance().shrink(fsi_.size - new_file_size); + if (res != api_error::success) { + return res; + } + } + auto is_empty_file = new_file_size == 0U; auto last_chunk = is_empty_file ? std::size_t(0U) @@ -525,19 +538,6 @@ auto open_file::resize(std::uint64_t new_file_size) -> api_error { return api_error::success; } - if (new_file_size > fsi_.size) { - auto res = - cache_size_mgr::instance().expand(new_file_size - fsi_.size, true); - if (res != api_error::success) { - return res; - } - } else { - auto res = cache_size_mgr::instance().shrink(fsi_.size - new_file_size); - if (res != api_error::success) { - return res; - } - } - return native_operation( new_file_size, [this, &new_file_size](native_handle) -> api_error { return nf_->truncate(new_file_size) ? api_error::success