From f5170dc69bc87ad8634895297a97ae1348c896ab Mon Sep 17 00:00:00 2001 From: "Admiral H. Curtiss" Date: Sat, 19 Dec 2020 18:19:40 +0100 Subject: [PATCH] Common/LinearDiskCache: Handle truncated shadercache files. --- Source/Core/Common/LinearDiskCache.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Source/Core/Common/LinearDiskCache.h b/Source/Core/Common/LinearDiskCache.h index 4e9e136fa7..43af78eb3d 100644 --- a/Source/Core/Common/LinearDiskCache.h +++ b/Source/Core/Common/LinearDiskCache.h @@ -76,6 +76,7 @@ public: std::unique_ptr value = nullptr; u32 value_size = 0; u32 entry_number = 0; + u64 last_valid_value_start = m_file.Tell(); while (m_file.ReadArray(&value_size, 1)) { @@ -90,6 +91,7 @@ public: if (m_file.ReadArray(&key, 1) && m_file.ReadArray(value.get(), value_size) && m_file.ReadArray(&entry_number, 1) && entry_number == m_num_entries + 1) { + last_valid_value_start = m_file.Tell(); reader.Read(key, value.get(), value_size); } else @@ -100,6 +102,7 @@ public: m_num_entries++; } m_file.Clear(); + m_file.Seek(last_valid_value_start, SEEK_SET); return m_num_entries; }