[VFS] Fixed invalid read size when extracting memory mapped files
This commit is contained in:
@@ -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];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user