[libcxx] r318236 - Merging r313776:

Tom Stellard via cfe-commits cfe-commits at lists.llvm.org
Tue Nov 14 16:21:21 PST 2017


Author: tstellar
Date: Tue Nov 14 16:21:20 2017
New Revision: 318236

URL: http://llvm.org/viewvc/llvm-project?rev=318236&view=rev
Log:
Merging r313776:

------------------------------------------------------------------------
r313776 | marshall | 2017-09-20 10:34:11 -0700 (Wed, 20 Sep 2017) | 1 line

Fix a bit of UB in __independent_bits_engine. Fixes PR#34663
------------------------------------------------------------------------

Modified:
    libcxx/branches/release_50/include/algorithm

Modified: libcxx/branches/release_50/include/algorithm
URL: http://llvm.org/viewvc/llvm-project/libcxx/branches/release_50/include/algorithm?rev=318236&r1=318235&r2=318236&view=diff
==============================================================================
--- libcxx/branches/release_50/include/algorithm (original)
+++ libcxx/branches/release_50/include/algorithm Tue Nov 14 16:21:20 2017
@@ -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, _UInt
         {
             __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, _UInt
         {
             __u = __e_() - _Engine::min();
         } while (__u >= __y1_);
-        if (__w0_ < _WDt - 1)
+        if (__w0_ < _WRt - 1)
             _Sp <<= __w0_ + 1;
         else
             _Sp = 0;




More information about the cfe-commits mailing list