components/stdcxx/patches/059-6891667.patch
changeset 402 94ae4d75524c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/stdcxx/patches/059-6891667.patch	Thu Jul 14 11:26:11 2011 -0700
@@ -0,0 +1,228 @@
+--- stdcxx-4.2.1/include/valarray	2008-04-24 20:23:57.000000000 -0400
++++ stdcxx-4.2.1/include/valarray	2011-01-04 19:13:15.512297269 -0500
+@@ -3,7 +3,7 @@
+  *
+  * valaray - Declarations for the Standard Library valarray
+  *
+- * $Id: valarray 604045 2007-12-13 21:56:09Z sebor $
++ * $Id$
+  *
+  ***************************************************************************
+  *
+@@ -39,13 +39,13 @@
+ #include _RWSTD_CMATH
+ 
+ 
+-#ifdef _MSC_VER
++#ifdef _RWSTD_MSVC
+ #  pragma warning (push)
+    // disable conversion from 'double' to 'float', possible loss of data
+    // until a conforming <cmath> header with float and long double overloads
+    // for the C functions is provided
+ #  pragma warning (disable: 4244)
+-#endif   // _MSC_VER
++#endif   // _RWSTD_MSVC
+ 
+ 
+ _RWSTD_NAMESPACE (std) { 
+@@ -1856,8 +1856,8 @@
+     _RWSTD_SIZE_T __i = gsl->next_ind();
+     _RWSTD_SIZE_T __cpt = 0;
+ 
+-    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
+-    {
++    while (   (!gsl->is_reseted () || (!__cpt && gsl->ind_numb ()))
++           && __cpt < __rhs.size ()) {
+       (*_C_array)[__i] = __rhs[__cpt];
+       __i= gsl->next_ind();
+       __cpt++;
+@@ -1869,11 +1869,12 @@
+   { 
+     gslice *gsl = _RWSTD_CONST_CAST (gslice*, &_C_slice);
+     _RWSTD_SIZE_T __i = gsl->next_ind();
++    _RWSTD_SIZE_T __cpt = 0;
+ 
+-    while( !gsl->is_reseted() )
+-    {
++    while (!gsl->is_reseted () || (!__cpt && gsl->ind_numb ())) {
+       (*_C_array)[__i] = value;
+       __i= gsl->next_ind();
++      __cpt++;
+     }
+   }
+ 
+@@ -1887,8 +1888,8 @@
+     _RWSTD_SIZE_T __i = gsl->next_ind();
+     _RWSTD_SIZE_T __cpt = 0;
+ 
+-    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
+-    {
++    while (   (!gsl->is_reseted () || (!__cpt && gsl->ind_numb ()))
++           && __cpt < __rhs.size ()) {
+       (*_C_array)[__i] *= __rhs[__cpt];
+       __i= gsl->next_ind();
+       __cpt++;
+@@ -1902,8 +1903,8 @@
+     _RWSTD_SIZE_T __i = gsl->next_ind();
+     _RWSTD_SIZE_T __cpt = 0;
+ 
+-    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
+-    {
++    while (   (!gsl->is_reseted () || (!__cpt && gsl->ind_numb ()))
++           && __cpt < __rhs.size ()) {
+       (*_C_array)[__i] /= __rhs[__cpt];
+       __i= gsl->next_ind();
+       __cpt++;
+@@ -1917,8 +1918,8 @@
+     _RWSTD_SIZE_T __i = gsl->next_ind();
+     _RWSTD_SIZE_T __cpt = 0;
+ 
+-    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
+-    {
++    while (  (!gsl->is_reseted () || (!__cpt && gsl->ind_numb ()))
++           && __cpt < __rhs.size ()) {
+       (*_C_array)[__i] += __rhs[__cpt];
+       __i= gsl->next_ind();
+       __cpt++;
+@@ -1932,8 +1933,8 @@
+     _RWSTD_SIZE_T __i = gsl->next_ind();
+     _RWSTD_SIZE_T __cpt = 0;
+ 
+-    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
+-    {
++    while (   (!gsl->is_reseted() || (!__cpt && gsl->ind_numb ()))
++           && __cpt < __rhs.size ()) {
+       (*_C_array)[__i] -= __rhs[__cpt];
+       __i= gsl->next_ind();
+       __cpt++;
+@@ -1948,8 +1949,8 @@
+     _RWSTD_SIZE_T __i = gsl->next_ind();
+     _RWSTD_SIZE_T __cpt = 0;
+ 
+-    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
+-    {
++    while (   (!gsl->is_reseted () || (!__cpt && gsl->ind_numb ()))
++           && __cpt < __rhs.size ()) {
+       (*_C_array)[__i] %= __rhs[__cpt];
+       __i= gsl->next_ind();
+       __cpt++;
+@@ -1963,8 +1964,8 @@
+     _RWSTD_SIZE_T __i = gsl->next_ind();
+     _RWSTD_SIZE_T __cpt = 0;
+ 
+-    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
+-    {
++    while (   (!gsl->is_reseted () || (!__cpt && gsl->ind_numb ()))
++           && __cpt < __rhs.size ()) {
+       (*_C_array)[__i] ^= __rhs[__cpt];
+       __i= gsl->next_ind();
+       __cpt++;
+@@ -1978,8 +1979,8 @@
+     _RWSTD_SIZE_T __i = gsl->next_ind();
+     _RWSTD_SIZE_T __cpt = 0;
+ 
+-    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
+-    {
++    while (   (!gsl->is_reseted() || (!__cpt && gsl->ind_numb ()))
++           && __cpt < __rhs.size ()) {
+       (*_C_array)[__i] &= __rhs[__cpt];
+       __i= gsl->next_ind();
+       __cpt++;
+@@ -1993,8 +1994,8 @@
+     _RWSTD_SIZE_T __i = gsl->next_ind();
+     _RWSTD_SIZE_T __cpt = 0;
+ 
+-    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
+-    {
++    while (   (!gsl->is_reseted() || (!__cpt && gsl->ind_numb ()))
++           && __cpt < __rhs.size ()) {
+       (*_C_array)[__i] |= __rhs[__cpt];
+       __i= gsl->next_ind();
+       __cpt++;
+@@ -2008,8 +2009,8 @@
+     _RWSTD_SIZE_T __i = gsl->next_ind();
+     _RWSTD_SIZE_T __cpt = 0;
+ 
+-    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
+-    {
++    while (   (!gsl->is_reseted () || (!__cpt && gsl->ind_numb ()))
++           && __cpt < __rhs.size ()) {
+       (*_C_array)[__i] <<= __rhs[__cpt];
+       __i= gsl->next_ind();
+       __cpt++;
+@@ -2023,8 +2024,8 @@
+     _RWSTD_SIZE_T __i = gsl->next_ind();
+     _RWSTD_SIZE_T __cpt = 0;
+ 
+-    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
+-    {
++    while (   (!gsl->is_reseted () || (!__cpt && gsl->ind_numb ()))
++           && __cpt < __rhs.size ()) {
+       (*_C_array)[__i] >>= __rhs[__cpt];
+       __i= gsl->next_ind();
+       __cpt++;
+@@ -2037,10 +2038,12 @@
+     if (_C_length.size () == 0)
+         return 0;
+ 
+-    _RWSTD_SIZE_T __inx = 1;
++    _RWSTD_SIZE_T __inx = _C_length [0] != 0;
+ 
+-    for(_RWSTD_SIZE_T __i = 0; __i < _C_length.size (); ++__i)
++    for(_RWSTD_SIZE_T __i = 0; __i < _C_length.size (); ++__i) {
++        if (_C_length [__i])
+         __inx *= _C_length [__i];
++    }
+ 
+     return __inx;
+ }
+@@ -2146,14 +2149,15 @@
+ {
+     gslice __sl(sl_ar._C_get_slice());
+ 
++    const _RWSTD_SIZE_T __maxinx = __sl.ind_numb ();
++
+     _RW::__rw_array <_TypeT> __tmp =
+-        _RW::__rw_array <_TypeT>(_TypeT (), __sl.ind_numb());
++        _RW::__rw_array <_TypeT>(_TypeT (), __maxinx);
+ 
+     _RWSTD_SIZE_T __i = __sl.next_ind();
+     _RWSTD_SIZE_T __cpt = 0;
+ 
+-    while( !__sl.is_reseted() )
+-    {
++    while (!__sl.is_reseted () || (!__cpt && __maxinx)) {
+       __tmp[__cpt] = (*(sl_ar.get_ref_mem_array()))[__i];
+       __i= __sl.next_ind();
+       __cpt++;
+@@ -2169,13 +2173,15 @@
+ { 
+     gslice __sl(sl_ar._C_get_slice());
+ 
++    const _RWSTD_SIZE_T __maxinx = __sl.ind_numb ();
++
+     _RW::__rw_array <_TypeT> __tmp =
+-        _RW::__rw_array <_TypeT>(_TypeT (), __sl.ind_numb());
++        _RW::__rw_array <_TypeT>(_TypeT (), __maxinx);
+ 
+     _RWSTD_SIZE_T __i = __sl.next_ind();
+     _RWSTD_SIZE_T __cpt = 0;
+ 
+-    while( !__sl.is_reseted() )
++    while( !__sl.is_reseted() || !__cpt && __maxinx )
+     {
+       __tmp[__cpt] = (*(sl_ar.get_ref_mem_array()))[__i];
+       __i= __sl.next_ind();
+@@ -2374,9 +2380,10 @@
+ #endif
+ 
+ 
+-#ifdef _MSC_VER
++#ifdef _RWSTD_MSVC
+ #  pragma warning (pop)
+-#endif   // _MSC_VER
++#endif   // _RWSTD_MSVC
+ 
+ 
+ #endif   // _RWSTD_VALARRAY_INCLUDED
++