summaryrefslogtreecommitdiff
path: root/Source/Core/DiscIO/WIACompression.cpp
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2021-04-07 01:43:39 +0200
committerGitHub <noreply@github.com>2021-04-07 01:43:39 +0200
commitc1617460a182f5ea8579e5604a999dcf0734c2ce (patch)
treef4a32ff5fe66235a2c1b6d7c5b909c5028991de0 /Source/Core/DiscIO/WIACompression.cpp
parent2c537e341f0a8829d881d83b124a5b9549333e29 (diff)
parent1a9e72c9bbed1842621969f035dec47ac75d9db4 (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.cpp10
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);