diff --git a/src/common/linear_disk_cache.h b/src/common/linear_disk_cache.h index 94c695163e..61e4bd2175 100644 --- a/src/common/linear_disk_cache.h +++ b/src/common/linear_disk_cache.h @@ -5,6 +5,7 @@ #pragma once #include +#include #include "common/common_types.h" // defined in Version.cpp @@ -66,7 +67,7 @@ public: // good header, read some key/value pairs K key; - V* value = nullptr; + std::vector value; u32 value_size; u32 entry_number; @@ -78,13 +79,13 @@ public: if (next_extent > file_size) break; - delete[] value; - value = new V[value_size]; + value.clear(); + value.resize(value_size); // read key/value and pass to reader - if (Read(&key) && Read(value, value_size) && Read(&entry_number) && + if (Read(&key) && Read(value.data(), value_size) && Read(&entry_number) && entry_number == m_num_entries + 1) { - reader.Read(key, value, value_size); + reader.Read(key, value.data(), value_size); } else { break; } @@ -95,7 +96,7 @@ public: m_file.seekp(last_pos); m_file.clear(); - delete[] value; + value.clear(); return m_num_entries; }