diff options
| author | Léo Lam <leo@leolam.fr> | 2021-04-07 01:43:39 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-07 01:43:39 +0200 |
| commit | c1617460a182f5ea8579e5604a999dcf0734c2ce (patch) | |
| tree | f4a32ff5fe66235a2c1b6d7c5b909c5028991de0 /Source/Core/DiscIO/WIACompression.cpp | |
| parent | 2c537e341f0a8829d881d83b124a5b9549333e29 (diff) | |
| parent | 1a9e72c9bbed1842621969f035dec47ac75d9db4 (diff) | |
Merge pull request #9480 from leoetlino/saturating-cast
MathUtil: Add SaturatingCast to cast floats more safely
Diffstat (limited to 'Source/Core/DiscIO/WIACompression.cpp')
| -rw-r--r-- | Source/Core/DiscIO/WIACompression.cpp | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/Source/Core/DiscIO/WIACompression.cpp b/Source/Core/DiscIO/WIACompression.cpp index 5b5da07a37..17231f63b3 100644 --- a/Source/Core/DiscIO/WIACompression.cpp +++ b/Source/Core/DiscIO/WIACompression.cpp @@ -19,6 +19,7 @@ #include "Common/Assert.h" #include "Common/CommonTypes.h" +#include "Common/MathUtil.h" #include "Common/Swap.h" #include "DiscIO/LaggedFibonacciGenerator.h" @@ -166,18 +167,13 @@ bool Bzip2Decompressor::Decompress(const DecompressionBuffer& in, DecompressionB m_started = true; } - constexpr auto clamped_cast = [](size_t x) { - return static_cast<unsigned int>( - std::min<size_t>(std::numeric_limits<unsigned int>().max(), x)); - }; - char* const in_ptr = reinterpret_cast<char*>(const_cast<u8*>(in.data.data() + *in_bytes_read)); m_stream.next_in = in_ptr; - m_stream.avail_in = clamped_cast(in.bytes_written - *in_bytes_read); + m_stream.avail_in = MathUtil::SaturatingCast<u32>(in.bytes_written - *in_bytes_read); char* const out_ptr = reinterpret_cast<char*>(out->data.data() + out->bytes_written); m_stream.next_out = out_ptr; - m_stream.avail_out = clamped_cast(out->data.size() - out->bytes_written); + m_stream.avail_out = MathUtil::SaturatingCast<u32>(out->data.size() - out->bytes_written); const int result = BZ2_bzDecompress(&m_stream); |
