diff options
| -rw-r--r-- | src/video_core/buffer_cache/usage_tracker.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/video_core/buffer_cache/usage_tracker.h b/src/video_core/buffer_cache/usage_tracker.h index 5f8688d31..ae511ccb6 100644 --- a/src/video_core/buffer_cache/usage_tracker.h +++ b/src/video_core/buffer_cache/usage_tracker.h | |||
| @@ -26,6 +26,9 @@ public: | |||
| 26 | void Track(u64 offset, u64 size) noexcept { | 26 | void Track(u64 offset, u64 size) noexcept { |
| 27 | const size_t page = offset >> PAGE_SHIFT; | 27 | const size_t page = offset >> PAGE_SHIFT; |
| 28 | const size_t page_end = (offset + size) >> PAGE_SHIFT; | 28 | const size_t page_end = (offset + size) >> PAGE_SHIFT; |
| 29 | if (page_end < page || page_end >= pages.size()) { | ||
| 30 | return; | ||
| 31 | } | ||
| 29 | TrackPage(page, offset, size); | 32 | TrackPage(page, offset, size); |
| 30 | if (page == page_end) { | 33 | if (page == page_end) { |
| 31 | return; | 34 | return; |
| @@ -41,6 +44,9 @@ public: | |||
| 41 | [[nodiscard]] bool IsUsed(u64 offset, u64 size) const noexcept { | 44 | [[nodiscard]] bool IsUsed(u64 offset, u64 size) const noexcept { |
| 42 | const size_t page = offset >> PAGE_SHIFT; | 45 | const size_t page = offset >> PAGE_SHIFT; |
| 43 | const size_t page_end = (offset + size) >> PAGE_SHIFT; | 46 | const size_t page_end = (offset + size) >> PAGE_SHIFT; |
| 47 | if (page_end < page || page_end >= pages.size()) { | ||
| 48 | return false; | ||
| 49 | } | ||
| 44 | if (IsPageUsed(page, offset, size)) { | 50 | if (IsPageUsed(page, offset, size)) { |
| 45 | return true; | 51 | return true; |
| 46 | } | 52 | } |