http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50510

             Bug #: 50510
           Summary: transposed variable names in std::seed_seq::generate
    Classification: Unclassified
           Product: gcc
           Version: 4.6.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: john.sal...@deshaw.com


The C++11 "Final Draft International Standard" (FDIS n3290.pdf) fixes a defect
in the "Final Committee Draft" (FCD n3092.pdf), swapping the use of the
intermediate variables r3 and r4 in the std::seed_seq::generate() function. 
See 25.5.7.1 paragraph 8c.  This patch brings libstdc++ up-to-date:

salm...@drdlogin0039.en.desres$ diff -u oldrandom.tcc random.tcc
--- oldrandom.tcc    2011-09-19 10:04:46.836512000 -0400
+++ random.tcc    2011-09-24 17:45:02.879621416 -0400
@@ -2796,8 +2796,8 @@
       _Type __r4 = __r3 - __k % __n;
       __r4 = __detail::__mod<_Type,
                __detail::_Shift<_Type, 32>::__value>(__r4);
-      __begin[(__k + __p) % __n] ^= __r4;
-      __begin[(__k + __q) % __n] ^= __r3;
+      __begin[(__k + __p) % __n] ^= __r3;
+      __begin[(__k + __q) % __n] ^= __r4;
       __begin[__k % __n] = __r4;
     }
     }
salm...@drdlogin0039.en.desres$

Reply via email to