aboutsummaryrefslogtreecommitdiff
path: root/contrib/libstdc++
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/libstdc++')
-rw-r--r--contrib/libstdc++/ChangeLog15
-rw-r--r--contrib/libstdc++/include/std/std_valarray.h2
-rw-r--r--contrib/libstdc++/include/tr1/random6
3 files changed, 21 insertions, 2 deletions
diff --git a/contrib/libstdc++/ChangeLog b/contrib/libstdc++/ChangeLog
index 7aa047877ffc..d915bcf66fbe 100644
--- a/contrib/libstdc++/ChangeLog
+++ b/contrib/libstdc++/ChangeLog
@@ -1,3 +1,18 @@
+2007-08-28 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/33128
+ * include/tr1/random (uniform_int<>::_M_call): Deal with
+ __urng() returning negative values.
+ * testsuite/tr1/5_numerical_facilities/random/uniform_int/33128.cc:
+ New.
+
+2007-08-17 Johannes Willkomm <willkomm@sc.rwth-aachen.de>
+
+ PR libstdc++/33084
+ * include/std/valarray (operator _Op(const _Tp&,
+ const valarray<>&)): Fix typo.
+ * testsuite/26_numerics/numeric_arrays/valarray/33084.cc: New.
+
2007-07-19 Release Manager
* GCC 4.2.1 released.
diff --git a/contrib/libstdc++/include/std/std_valarray.h b/contrib/libstdc++/include/std/std_valarray.h
index 87f30ec4e028..6ef21500fc67 100644
--- a/contrib/libstdc++/include/std/std_valarray.h
+++ b/contrib/libstdc++/include/std/std_valarray.h
@@ -1010,7 +1010,7 @@ _DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(>>, __shift_right)
{ \
typedef _BinClos<_Name, _Constant, _ValArray, _Tp, _Tp> _Closure; \
typedef typename __fun<_Name, _Tp>::result_type _Rt; \
- return _Expr<_Closure, _Tp>(_Closure(__t, __v)); \
+ return _Expr<_Closure, _Rt>(_Closure(__t, __v)); \
}
_DEFINE_BINARY_OPERATOR(+, __plus)
diff --git a/contrib/libstdc++/include/tr1/random b/contrib/libstdc++/include/tr1/random
index 56ea508575d3..c97f16d2a2d7 100644
--- a/contrib/libstdc++/include/tr1/random
+++ b/contrib/libstdc++/include/tr1/random
@@ -1618,7 +1618,11 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
result_type
_M_call(_UniformRandomNumberGenerator& __urng,
result_type __min, result_type __max, true_type)
- { return result_type(__urng() % (__max - __min + 1)) + __min; }
+ {
+ typedef typename __gnu_cxx::__add_unsigned<typename
+ _UniformRandomNumberGenerator::result_type>::__type __utype;
+ return result_type(__utype(__urng()) % (__max - __min + 1)) + __min;
+ }
template<typename _UniformRandomNumberGenerator>
result_type