diff options
author | bunnei <bunneidev@gmail.com> | 2021-06-07 19:51:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-07 19:51:17 +0200 |
commit | df91c9f5e68c253d5e60d26e8d35e6bc423f0571 (patch) | |
tree | b885455018581804972d171232f3c91ee009b2e8 /src/video_core | |
parent | Merge pull request #6414 from bunnei/fix-service-threads (diff) | |
parent | decoders: Break instead of continue (diff) | |
download | yuzu-df91c9f5e68c253d5e60d26e8d35e6bc423f0571.tar yuzu-df91c9f5e68c253d5e60d26e8d35e6bc423f0571.tar.gz yuzu-df91c9f5e68c253d5e60d26e8d35e6bc423f0571.tar.bz2 yuzu-df91c9f5e68c253d5e60d26e8d35e6bc423f0571.tar.lz yuzu-df91c9f5e68c253d5e60d26e8d35e6bc423f0571.tar.xz yuzu-df91c9f5e68c253d5e60d26e8d35e6bc423f0571.tar.zst yuzu-df91c9f5e68c253d5e60d26e8d35e6bc423f0571.zip |
Diffstat (limited to 'src/video_core')
-rw-r--r-- | src/video_core/textures/decoders.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/video_core/textures/decoders.cpp b/src/video_core/textures/decoders.cpp index 3a463d5db..f1f523ad1 100644 --- a/src/video_core/textures/decoders.cpp +++ b/src/video_core/textures/decoders.cpp @@ -63,6 +63,14 @@ void Swizzle(std::span<u8> output, std::span<const u8> input, u32 bytes_per_pixe const u32 unswizzled_offset = slice * pitch * height + line * pitch + column * bytes_per_pixel; + if (const auto offset = (TO_LINEAR ? unswizzled_offset : swizzled_offset); + offset >= input.size()) { + // TODO(Rodrigo): This is an out of bounds access that should never happen. To + // avoid crashing the emulator, break. + ASSERT_MSG(false, "offset {} exceeds input size {}!", offset, input.size()); + break; + } + u8* const dst = &output[TO_LINEAR ? swizzled_offset : unswizzled_offset]; const u8* const src = &input[TO_LINEAR ? unswizzled_offset : swizzled_offset]; std::memcpy(dst, src, bytes_per_pixel); |