diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 1a8a822fd5170bb793f87feee310b942124ee4e8..077e48386c0b35296c82b785d62b8b2f0a42fee2 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2013-02-04 Manuel López-Ibáñez <manu@gcc.gnu.org> + Paolo Carlini <paolo.carlini@oracle.com> + + PR libstdc++/56202 + * include/bits/random.tcc (binomial_distribution<>:: + _M_waiting(_UniformRandomNumberGenerator&, _IntType)): Avoid + division by zero. + 2013-02-03 Richard Sandiford <rdsandiford@googlemail.com> Update copyright years. diff --git a/libstdc++-v3/include/bits/random.tcc b/libstdc++-v3/include/bits/random.tcc index ffa3967492b2ebf7014dc829797491530163827b..6220a5d61d4dea8023150f69db8a2c7e51561007 100644 --- a/libstdc++-v3/include/bits/random.tcc +++ b/libstdc++-v3/include/bits/random.tcc @@ -1658,6 +1658,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION do { const double __e = -std::log(1.0 - __aurng()); + if (__t == __x) + { + if (__e) + return __x; + continue; + } __sum += __e / (__t - __x); __x += 1; }