Common/LinearDiskCache: Handle truncated shadercache files.

This commit is contained in:
Admiral H. Curtiss 2020-12-19 18:19:40 +01:00
parent e91a347a07
commit f5170dc69b
1 changed files with 3 additions and 0 deletions

View File

@ -76,6 +76,7 @@ public:
std::unique_ptr<V[]> 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;
}