components/stdcxx/patches/059-6891667.patch
changeset 402 94ae4d75524c
equal deleted inserted replaced
401:bf52ef48020c 402:94ae4d75524c
       
     1 --- stdcxx-4.2.1/include/valarray	2008-04-24 20:23:57.000000000 -0400
       
     2 +++ stdcxx-4.2.1/include/valarray	2011-01-04 19:13:15.512297269 -0500
       
     3 @@ -3,7 +3,7 @@
       
     4   *
       
     5   * valaray - Declarations for the Standard Library valarray
       
     6   *
       
     7 - * $Id: valarray 604045 2007-12-13 21:56:09Z sebor $
       
     8 + * $Id$
       
     9   *
       
    10   ***************************************************************************
       
    11   *
       
    12 @@ -39,13 +39,13 @@
       
    13  #include _RWSTD_CMATH
       
    14  
       
    15  
       
    16 -#ifdef _MSC_VER
       
    17 +#ifdef _RWSTD_MSVC
       
    18  #  pragma warning (push)
       
    19     // disable conversion from 'double' to 'float', possible loss of data
       
    20     // until a conforming <cmath> header with float and long double overloads
       
    21     // for the C functions is provided
       
    22  #  pragma warning (disable: 4244)
       
    23 -#endif   // _MSC_VER
       
    24 +#endif   // _RWSTD_MSVC
       
    25  
       
    26  
       
    27  _RWSTD_NAMESPACE (std) { 
       
    28 @@ -1856,8 +1856,8 @@
       
    29      _RWSTD_SIZE_T __i = gsl->next_ind();
       
    30      _RWSTD_SIZE_T __cpt = 0;
       
    31  
       
    32 -    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
       
    33 -    {
       
    34 +    while (   (!gsl->is_reseted () || (!__cpt && gsl->ind_numb ()))
       
    35 +           && __cpt < __rhs.size ()) {
       
    36        (*_C_array)[__i] = __rhs[__cpt];
       
    37        __i= gsl->next_ind();
       
    38        __cpt++;
       
    39 @@ -1869,11 +1869,12 @@
       
    40    { 
       
    41      gslice *gsl = _RWSTD_CONST_CAST (gslice*, &_C_slice);
       
    42      _RWSTD_SIZE_T __i = gsl->next_ind();
       
    43 +    _RWSTD_SIZE_T __cpt = 0;
       
    44  
       
    45 -    while( !gsl->is_reseted() )
       
    46 -    {
       
    47 +    while (!gsl->is_reseted () || (!__cpt && gsl->ind_numb ())) {
       
    48        (*_C_array)[__i] = value;
       
    49        __i= gsl->next_ind();
       
    50 +      __cpt++;
       
    51      }
       
    52    }
       
    53  
       
    54 @@ -1887,8 +1888,8 @@
       
    55      _RWSTD_SIZE_T __i = gsl->next_ind();
       
    56      _RWSTD_SIZE_T __cpt = 0;
       
    57  
       
    58 -    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
       
    59 -    {
       
    60 +    while (   (!gsl->is_reseted () || (!__cpt && gsl->ind_numb ()))
       
    61 +           && __cpt < __rhs.size ()) {
       
    62        (*_C_array)[__i] *= __rhs[__cpt];
       
    63        __i= gsl->next_ind();
       
    64        __cpt++;
       
    65 @@ -1902,8 +1903,8 @@
       
    66      _RWSTD_SIZE_T __i = gsl->next_ind();
       
    67      _RWSTD_SIZE_T __cpt = 0;
       
    68  
       
    69 -    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
       
    70 -    {
       
    71 +    while (   (!gsl->is_reseted () || (!__cpt && gsl->ind_numb ()))
       
    72 +           && __cpt < __rhs.size ()) {
       
    73        (*_C_array)[__i] /= __rhs[__cpt];
       
    74        __i= gsl->next_ind();
       
    75        __cpt++;
       
    76 @@ -1917,8 +1918,8 @@
       
    77      _RWSTD_SIZE_T __i = gsl->next_ind();
       
    78      _RWSTD_SIZE_T __cpt = 0;
       
    79  
       
    80 -    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
       
    81 -    {
       
    82 +    while (  (!gsl->is_reseted () || (!__cpt && gsl->ind_numb ()))
       
    83 +           && __cpt < __rhs.size ()) {
       
    84        (*_C_array)[__i] += __rhs[__cpt];
       
    85        __i= gsl->next_ind();
       
    86        __cpt++;
       
    87 @@ -1932,8 +1933,8 @@
       
    88      _RWSTD_SIZE_T __i = gsl->next_ind();
       
    89      _RWSTD_SIZE_T __cpt = 0;
       
    90  
       
    91 -    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
       
    92 -    {
       
    93 +    while (   (!gsl->is_reseted() || (!__cpt && gsl->ind_numb ()))
       
    94 +           && __cpt < __rhs.size ()) {
       
    95        (*_C_array)[__i] -= __rhs[__cpt];
       
    96        __i= gsl->next_ind();
       
    97        __cpt++;
       
    98 @@ -1948,8 +1949,8 @@
       
    99      _RWSTD_SIZE_T __i = gsl->next_ind();
       
   100      _RWSTD_SIZE_T __cpt = 0;
       
   101  
       
   102 -    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
       
   103 -    {
       
   104 +    while (   (!gsl->is_reseted () || (!__cpt && gsl->ind_numb ()))
       
   105 +           && __cpt < __rhs.size ()) {
       
   106        (*_C_array)[__i] %= __rhs[__cpt];
       
   107        __i= gsl->next_ind();
       
   108        __cpt++;
       
   109 @@ -1963,8 +1964,8 @@
       
   110      _RWSTD_SIZE_T __i = gsl->next_ind();
       
   111      _RWSTD_SIZE_T __cpt = 0;
       
   112  
       
   113 -    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
       
   114 -    {
       
   115 +    while (   (!gsl->is_reseted () || (!__cpt && gsl->ind_numb ()))
       
   116 +           && __cpt < __rhs.size ()) {
       
   117        (*_C_array)[__i] ^= __rhs[__cpt];
       
   118        __i= gsl->next_ind();
       
   119        __cpt++;
       
   120 @@ -1978,8 +1979,8 @@
       
   121      _RWSTD_SIZE_T __i = gsl->next_ind();
       
   122      _RWSTD_SIZE_T __cpt = 0;
       
   123  
       
   124 -    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
       
   125 -    {
       
   126 +    while (   (!gsl->is_reseted() || (!__cpt && gsl->ind_numb ()))
       
   127 +           && __cpt < __rhs.size ()) {
       
   128        (*_C_array)[__i] &= __rhs[__cpt];
       
   129        __i= gsl->next_ind();
       
   130        __cpt++;
       
   131 @@ -1993,8 +1994,8 @@
       
   132      _RWSTD_SIZE_T __i = gsl->next_ind();
       
   133      _RWSTD_SIZE_T __cpt = 0;
       
   134  
       
   135 -    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
       
   136 -    {
       
   137 +    while (   (!gsl->is_reseted() || (!__cpt && gsl->ind_numb ()))
       
   138 +           && __cpt < __rhs.size ()) {
       
   139        (*_C_array)[__i] |= __rhs[__cpt];
       
   140        __i= gsl->next_ind();
       
   141        __cpt++;
       
   142 @@ -2008,8 +2009,8 @@
       
   143      _RWSTD_SIZE_T __i = gsl->next_ind();
       
   144      _RWSTD_SIZE_T __cpt = 0;
       
   145  
       
   146 -    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
       
   147 -    {
       
   148 +    while (   (!gsl->is_reseted () || (!__cpt && gsl->ind_numb ()))
       
   149 +           && __cpt < __rhs.size ()) {
       
   150        (*_C_array)[__i] <<= __rhs[__cpt];
       
   151        __i= gsl->next_ind();
       
   152        __cpt++;
       
   153 @@ -2023,8 +2024,8 @@
       
   154      _RWSTD_SIZE_T __i = gsl->next_ind();
       
   155      _RWSTD_SIZE_T __cpt = 0;
       
   156  
       
   157 -    while( (!gsl->is_reseted()) && (__cpt < __rhs.size()) )
       
   158 -    {
       
   159 +    while (   (!gsl->is_reseted () || (!__cpt && gsl->ind_numb ()))
       
   160 +           && __cpt < __rhs.size ()) {
       
   161        (*_C_array)[__i] >>= __rhs[__cpt];
       
   162        __i= gsl->next_ind();
       
   163        __cpt++;
       
   164 @@ -2037,10 +2038,12 @@
       
   165      if (_C_length.size () == 0)
       
   166          return 0;
       
   167  
       
   168 -    _RWSTD_SIZE_T __inx = 1;
       
   169 +    _RWSTD_SIZE_T __inx = _C_length [0] != 0;
       
   170  
       
   171 -    for(_RWSTD_SIZE_T __i = 0; __i < _C_length.size (); ++__i)
       
   172 +    for(_RWSTD_SIZE_T __i = 0; __i < _C_length.size (); ++__i) {
       
   173 +        if (_C_length [__i])
       
   174          __inx *= _C_length [__i];
       
   175 +    }
       
   176  
       
   177      return __inx;
       
   178  }
       
   179 @@ -2146,14 +2149,15 @@
       
   180  {
       
   181      gslice __sl(sl_ar._C_get_slice());
       
   182  
       
   183 +    const _RWSTD_SIZE_T __maxinx = __sl.ind_numb ();
       
   184 +
       
   185      _RW::__rw_array <_TypeT> __tmp =
       
   186 -        _RW::__rw_array <_TypeT>(_TypeT (), __sl.ind_numb());
       
   187 +        _RW::__rw_array <_TypeT>(_TypeT (), __maxinx);
       
   188  
       
   189      _RWSTD_SIZE_T __i = __sl.next_ind();
       
   190      _RWSTD_SIZE_T __cpt = 0;
       
   191  
       
   192 -    while( !__sl.is_reseted() )
       
   193 -    {
       
   194 +    while (!__sl.is_reseted () || (!__cpt && __maxinx)) {
       
   195        __tmp[__cpt] = (*(sl_ar.get_ref_mem_array()))[__i];
       
   196        __i= __sl.next_ind();
       
   197        __cpt++;
       
   198 @@ -2169,13 +2173,15 @@
       
   199  { 
       
   200      gslice __sl(sl_ar._C_get_slice());
       
   201  
       
   202 +    const _RWSTD_SIZE_T __maxinx = __sl.ind_numb ();
       
   203 +
       
   204      _RW::__rw_array <_TypeT> __tmp =
       
   205 -        _RW::__rw_array <_TypeT>(_TypeT (), __sl.ind_numb());
       
   206 +        _RW::__rw_array <_TypeT>(_TypeT (), __maxinx);
       
   207  
       
   208      _RWSTD_SIZE_T __i = __sl.next_ind();
       
   209      _RWSTD_SIZE_T __cpt = 0;
       
   210  
       
   211 -    while( !__sl.is_reseted() )
       
   212 +    while( !__sl.is_reseted() || !__cpt && __maxinx )
       
   213      {
       
   214        __tmp[__cpt] = (*(sl_ar.get_ref_mem_array()))[__i];
       
   215        __i= __sl.next_ind();
       
   216 @@ -2374,9 +2380,10 @@
       
   217  #endif
       
   218  
       
   219  
       
   220 -#ifdef _MSC_VER
       
   221 +#ifdef _RWSTD_MSVC
       
   222  #  pragma warning (pop)
       
   223 -#endif   // _MSC_VER
       
   224 +#endif   // _RWSTD_MSVC
       
   225  
       
   226  
       
   227  #endif   // _RWSTD_VALARRAY_INCLUDED
       
   228 +