summaryrefslogtreecommitdiffstats
path: root/libcxx/include/algorithm
diff options
context:
space:
mode:
authorMarshall Clow <mclow.lists@gmail.com>2017-09-20 17:34:11 +0000
committerMarshall Clow <mclow.lists@gmail.com>2017-09-20 17:34:11 +0000
commit5beb2c3ab3df9b2f76b0c9d10db18c73c3ee5a2f (patch)
tree1ba66eae4f59866aa7d08dc4528cfbce8e1e28ae /libcxx/include/algorithm
parent92687d45db566cdc47905555ee4b249d47a46d25 (diff)
downloadbcm5719-llvm-5beb2c3ab3df9b2f76b0c9d10db18c73c3ee5a2f.tar.gz
bcm5719-llvm-5beb2c3ab3df9b2f76b0c9d10db18c73c3ee5a2f.zip
Fix a bit of UB in __independent_bits_engine. Fixes PR#34663
llvm-svn: 313776
Diffstat (limited to 'libcxx/include/algorithm')
-rw-r--r--libcxx/include/algorithm5
1 files changed, 3 insertions, 2 deletions
diff --git a/libcxx/include/algorithm b/libcxx/include/algorithm
index 31df79f1eb5..282083a89c2 100644
--- a/libcxx/include/algorithm
+++ b/libcxx/include/algorithm
@@ -3013,6 +3013,7 @@ template<class _Engine, class _UIntType>
_UIntType
__independent_bits_engine<_Engine, _UIntType>::__eval(true_type)
{
+ const size_t _WRt = numeric_limits<result_type>::digits;
result_type _Sp = 0;
for (size_t __k = 0; __k < __n0_; ++__k)
{
@@ -3021,7 +3022,7 @@ __independent_bits_engine<_Engine, _UIntType>::__eval(true_type)
{
__u = __e_() - _Engine::min();
} while (__u >= __y0_);
- if (__w0_ < _WDt)
+ if (__w0_ < _WRt)
_Sp <<= __w0_;
else
_Sp = 0;
@@ -3034,7 +3035,7 @@ __independent_bits_engine<_Engine, _UIntType>::__eval(true_type)
{
__u = __e_() - _Engine::min();
} while (__u >= __y1_);
- if (__w0_ < _WDt - 1)
+ if (__w0_ < _WRt - 1)
_Sp <<= __w0_ + 1;
else
_Sp = 0;
OpenPOWER on IntegriCloud