From: Paolo Carlini Date: Mon, 8 Nov 2004 17:55:54 +0000 (+0000) Subject: streambuf_iterator.h (class istreambuf_iterator): Consistently use _M_c to cache... X-Git-Tag: releases/gcc-4.0.0~3307 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=15fb0dbeb707ea75243d97eab9270b51bf446c94;p=thirdparty%2Fgcc.git streambuf_iterator.h (class istreambuf_iterator): Consistently use _M_c to cache the current char... 2004-11-08 Paolo Carlini * include/bits/streambuf_iterator.h (class istreambuf_iterator): Consistently use _M_c to cache the current char, i.e., not only when operator++(int) is involved; change _M_c to mutable. (_M_get()): Always save the return value of _M_sbuf->sgetc() into _M_c. * testsuite/22_locale/time_get/get_monthname/char/1.cc: Fix (long standing) typo. * testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc: Likewise. * testsuite/22_locale/time_get/get_weekday/char/1.cc: Likewise. * testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc: Likewise. From-SVN: r90275 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 62f996c11d96..86a8dcfd5266 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,16 @@ +2004-11-08 Paolo Carlini + + * include/bits/streambuf_iterator.h (class istreambuf_iterator): + Consistently use _M_c to cache the current char, i.e., not only + when operator++(int) is involved; change _M_c to mutable. + (_M_get()): Always save the return value of _M_sbuf->sgetc() into + _M_c. + * testsuite/22_locale/time_get/get_monthname/char/1.cc: Fix + (long standing) typo. + * testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc: Likewise. + * testsuite/22_locale/time_get/get_weekday/char/1.cc: Likewise. + * testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc: Likewise. + 2004-11-08 Paolo Carlini * include/bits/istream.tcc (getline(char_type*, streamsize, diff --git a/libstdc++-v3/include/bits/streambuf_iterator.h b/libstdc++-v3/include/bits/streambuf_iterator.h index 970933578c73..f378862ed14c 100644 --- a/libstdc++-v3/include/bits/streambuf_iterator.h +++ b/libstdc++-v3/include/bits/streambuf_iterator.h @@ -72,7 +72,7 @@ namespace std // NB: This implementation assumes the "end of stream" value // is EOF, or -1. mutable streambuf_type* _M_sbuf; - int_type _M_c; + mutable int_type _M_c; public: /// Construct end of input stream iterator. @@ -157,10 +157,11 @@ namespace std int_type __ret = __eof; if (_M_sbuf) { - if (!traits_type::eq_int_type(_M_c, __eof)) + if (!traits_type::eq_int_type(_M_c, __eof) + || !traits_type::eq_int_type((_M_c = _M_sbuf->sgetc()), + __eof)) __ret = _M_c; - else if (traits_type::eq_int_type((__ret = _M_sbuf->sgetc()), - __eof)) + else _M_sbuf = 0; } return __ret; diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/1.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/1.cc index 5d314613f9f4..b96007b22c98 100644 --- a/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/1.cc +++ b/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/1.cc @@ -102,7 +102,7 @@ void test01() tim_get.get_monthname(is_it06, end, iss, errorstate, &time06); VERIFY( time06.tm_mon == 4 ); VERIFY( errorstate == ios_base::failbit ); - VERIFY( *is_it05 == 'l'); + VERIFY( *is_it06 == 'l'); } int main() diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc index c5c51a38dee4..9eb219f3cd99 100644 --- a/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc +++ b/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc @@ -102,7 +102,7 @@ void test01() tim_get.get_monthname(is_it06, end, iss, errorstate, &time06); VERIFY( time06.tm_mon == 4 ); VERIFY( errorstate == ios_base::failbit ); - VERIFY( *is_it05 == L'l' ); + VERIFY( *is_it06 == L'l' ); } int main() diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/1.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/1.cc index 85565e87853a..1d6da0a8ab1f 100644 --- a/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/1.cc +++ b/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/1.cc @@ -106,7 +106,7 @@ void test01() tim_get.get_weekday(is_it06, end, iss, errorstate, &time06); VERIFY( time06.tm_wday == 4 ); VERIFY( errorstate == ios_base::failbit ); - VERIFY( *is_it05 == 'u'); + VERIFY( *is_it06 == 'u'); } int main() diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc index 67efe266847c..1852b9b39ee8 100644 --- a/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc +++ b/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc @@ -106,7 +106,7 @@ void test01() tim_get.get_weekday(is_it06, end, iss, errorstate, &time06); VERIFY( time06.tm_wday == 4 ); VERIFY( errorstate == ios_base::failbit ); - VERIFY( *is_it05 == L'u' ); + VERIFY( *is_it06 == L'u' ); } int main()