aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Salmon <john.salmon@deshaw.com>2011-09-24 18:28:36 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2011-09-24 18:28:36 +0000
commit9d1f3ce6ff16e0bba5e811bc66d0c7e4c7056f0f (patch)
treef1d692b56a9517a3135be1d8fbc044d249aff1e6
parenta271590a43eb22cee96e2c5c3b7a11816502033f (diff)
downloadgcc-9d1f3ce6ff16e0bba5e811bc66d0c7e4c7056f0f.zip
gcc-9d1f3ce6ff16e0bba5e811bc66d0c7e4c7056f0f.tar.gz
gcc-9d1f3ce6ff16e0bba5e811bc66d0c7e4c7056f0f.tar.bz2
re PR libstdc++/50509 ([C++0x] incorrect code in std::seed_seq::generate)
2011-09-24 John Salmon <john.salmon@deshaw.com> PR libstdc++/50509 * include/bits/random.tcc (seed_seq::generate): Fix computation. From-SVN: r179144
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/include/bits/random.tcc4
2 files changed, 7 insertions, 2 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index b0b433e..67643de 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+2011-09-24 John Salmon <john.salmon@deshaw.com>
+
+ PR libstdc++/50509
+ * include/bits/random.tcc (seed_seq::generate): Fix computation.
+
2011-09-21 Benjamin Kosnik <bkoz@redhat.com
* doc/Makefile.am (stamp-epub-docbook): Fix image directory location.
diff --git a/libstdc++-v3/include/bits/random.tcc b/libstdc++-v3/include/bits/random.tcc
index 01ee582..d35f2f4 100644
--- a/libstdc++-v3/include/bits/random.tcc
+++ b/libstdc++-v3/include/bits/random.tcc
@@ -2768,7 +2768,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
_Type __arg = (__begin[__k % __n]
^ __begin[(__k + __p) % __n]
^ __begin[(__k - 1) % __n]);
- _Type __r1 = __arg ^ (__arg << 27);
+ _Type __r1 = __arg ^ (__arg >> 27);
__r1 = __detail::__mod<_Type, __detail::_Shift<_Type, 32>::__value,
1664525u, 0u>(__r1);
_Type __r2 = __r1;
@@ -2790,7 +2790,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
_Type __arg = (__begin[__k % __n]
+ __begin[(__k + __p) % __n]
+ __begin[(__k - 1) % __n]);
- _Type __r3 = __arg ^ (__arg << 27);
+ _Type __r3 = __arg ^ (__arg >> 27);
__r3 = __detail::__mod<_Type, __detail::_Shift<_Type, 32>::__value,
1566083941u, 0u>(__r3);
_Type __r4 = __r3 - __k % __n;