diff --git a/lib/external/libwolv b/lib/external/libwolv index 7efd66f81..f7c78709e 160000 --- a/lib/external/libwolv +++ b/lib/external/libwolv @@ -1 +1 @@ -Subproject commit 7efd66f8175549430d66092b1eed8ba0eed6e9c6 +Subproject commit f7c78709e89f2c1c293ec60f897881e7e135580b diff --git a/plugins/builtin/source/content/providers/file_provider.cpp b/plugins/builtin/source/content/providers/file_provider.cpp index 806c34df9..507392c06 100644 --- a/plugins/builtin/source/content/providers/file_provider.cpp +++ b/plugins/builtin/source/content/providers/file_provider.cpp @@ -46,14 +46,14 @@ namespace hex::plugin::builtin { if (m_fileSize == 0 || (offset + size) > m_fileSize || buffer == nullptr || size == 0) return; - std::memcpy(buffer, m_file.getMapping() + offset, size); + m_file.readBufferAtomic(offset, static_cast(buffer), size); } void FileProvider::writeRaw(u64 offset, const void *buffer, size_t size) { if ((offset + size) > this->getActualSize() || buffer == nullptr || size == 0) return; - std::memcpy(m_file.getMapping() + offset, buffer, size); + m_file.writeBufferAtomic(offset, static_cast(buffer), size); } void FileProvider::save() { @@ -229,23 +229,15 @@ namespace hex::plugin::builtin { } } - m_fileStats = file.getFileInfo(); m_file = std::move(file); - - if (!m_file.map()) { - this->setErrorMessage(hex::format("hex.builtin.provider.file.error.open"_lang, m_path.string(), ::strerror(errno))); - return false; - } - - m_fileSize = m_file.getSize(); - - m_file.close(); + m_fileStats = m_file.getFileInfo(); + m_fileSize = m_file.getSize(); return true; } void FileProvider::close() { - m_file.unmap(); + m_file.close(); } void FileProvider::loadSettings(const nlohmann::json &settings) {