diff --git a/Core/FileLoaders/RamCachingFileLoader.cpp b/Core/FileLoaders/RamCachingFileLoader.cpp index b4f9453941..6c781a36d5 100644 --- a/Core/FileLoaders/RamCachingFileLoader.cpp +++ b/Core/FileLoaders/RamCachingFileLoader.cpp @@ -90,13 +90,13 @@ size_t RamCachingFileLoader::ReadAt(s64 absolutePos, size_t bytes, void *data) { } void RamCachingFileLoader::InitCache() { - cache_ = (u8 *)malloc(filesize_); + lock_guard guard(blocksMutex_); + u32 blockCount = (u32)((filesize_ + BLOCK_SIZE - 1) >> BLOCK_SHIFT); + // Overallocate for the last block. + cache_ = (u8 *)malloc((size_t)blockCount << BLOCK_SHIFT); if (cache_ == nullptr) { return; } - - lock_guard guard(blocksMutex_); - u32 blockCount = (u32)((filesize_ + BLOCK_SIZE - 1) >> BLOCK_SHIFT); aheadRemaining_ = blockCount; blocks_.resize(blockCount); }