diff options
author | Paolo Carlini <pcarlini@suse.de> | 2004-11-04 11:29:30 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2004-11-04 11:29:30 +0000 |
commit | eba7452ba8a7c3d088531c0a9dca639b6d708883 (patch) | |
tree | f89065e86a657cc1677b846ea604653143adc1a4 | |
parent | ab3d104990ee26227e9e1ef69064236138745a09 (diff) | |
download | gcc-eba7452ba8a7c3d088531c0a9dca639b6d708883.zip gcc-eba7452ba8a7c3d088531c0a9dca639b6d708883.tar.gz gcc-eba7452ba8a7c3d088531c0a9dca639b6d708883.tar.bz2 |
locale_facets.tcc (num_get<>::do_get(bool&)): Evaluate __beg == __end the exact strict minimum number of times.
2004-11-04 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.tcc (num_get<>::do_get(bool&)):
Evaluate __beg == __end the exact strict minimum number of times.
From-SVN: r90058
-rw-r--r-- | libstdc++-v3/ChangeLog | 5 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/locale_facets.tcc | 8 |
2 files changed, 11 insertions, 2 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 6848060..719bd39 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2004-11-04 Paolo Carlini <pcarlini@suse.de> + + * include/bits/locale_facets.tcc (num_get<>::do_get(bool&)): + Evaluate __beg == __end the exact strict minimum number of times. + 2004-11-03 Jonathan Wakely <redi@gcc.gnu.org> * include/bits/stl_numeric.h (partial_sum, adjacent_difference): diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc index c32a65d..41778bc 100644 --- a/libstdc++-v3/include/bits/locale_facets.tcc +++ b/libstdc++-v3/include/bits/locale_facets.tcc @@ -687,7 +687,8 @@ namespace std bool __testf = true; bool __testt = true; size_t __n; - for (__n = 0; __beg != __end; ++__n, ++__beg) + bool __testeof = __beg == __end; + for (__n = 0; !__testeof; ++__n) { const char_type __c = *__beg; @@ -705,6 +706,9 @@ namespace std if (!__testf && !__testt) break; + + if (++__beg == __end) + __testeof = true; } if (__testf && __n == __lc->_M_falsename_size) __v = 0; @@ -713,7 +717,7 @@ namespace std else __err |= ios_base::failbit; - if (__beg == __end) + if (__testeof) __err |= ios_base::eofbit; } return __beg; |