[VFS] Fixed invalid read size when extracting memory mapped files

This commit is contained in:
Gliniak
2025-11-17 08:47:15 +01:00
parent 09b9e37c4f
commit 56697f1be6

View File

@@ -375,17 +375,19 @@ X_STATUS VirtualFileSystem::ExtractContentFile(Entry* entry,
if (entry->can_map()) { if (entry->can_map()) {
auto map = entry->OpenMapped(xe::MappedMemory::Mode::kRead); auto map = entry->OpenMapped(xe::MappedMemory::Mode::kRead);
auto remaining_size = map->size(); size_t remaining_size = map->size();
auto offset = 0; size_t offset = 0;
while (remaining_size > 0) { while (remaining_size > 0) {
fwrite(map->data() + offset, write_buffer_size, 1, file); const auto bytes_to_read = std::min(write_buffer_size, remaining_size);
offset += write_buffer_size; fwrite(map->data() + offset, bytes_to_read, 1, file);
remaining_size -= write_buffer_size; offset += bytes_to_read;
remaining_size -= bytes_to_read;
progress += bytes_to_read;
} }
map->Close(); map->Close();
} else { } else {
auto remaining_size = entry->size(); size_t remaining_size = entry->size();
size_t offset = 0; size_t offset = 0;
buffer = new uint8_t[write_buffer_size]; buffer = new uint8_t[write_buffer_size];