diff options
author | Paolo Carlini <pcarlini@suse.de> | 2004-11-08 17:55:54 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2004-11-08 17:55:54 +0000 |
commit | 15fb0dbeb707ea75243d97eab9270b51bf446c94 (patch) | |
tree | c23e50eaf3aa77026b82b22399caa173f4232326 | |
parent | 7bff66a715c67c1c3206a08ecdd19bb04d2bd475 (diff) | |
download | gcc-15fb0dbeb707ea75243d97eab9270b51bf446c94.zip gcc-15fb0dbeb707ea75243d97eab9270b51bf446c94.tar.gz gcc-15fb0dbeb707ea75243d97eab9270b51bf446c94.tar.bz2 |
streambuf_iterator.h (class istreambuf_iterator): Consistently use _M_c to cache the current char...
2004-11-08 Paolo Carlini <pcarlini@suse.de>
* 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
6 files changed, 22 insertions, 8 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 62f996c..86a8dcf 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,18 @@ 2004-11-08 Paolo Carlini <pcarlini@suse.de> + * 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 <pcarlini@suse.de> + * include/bits/istream.tcc (getline(char_type*, streamsize, char_type), ignore(streamsize), ignore(streamsize, int_type)): Restore a generic version of the functions, not using the diff --git a/libstdc++-v3/include/bits/streambuf_iterator.h b/libstdc++-v3/include/bits/streambuf_iterator.h index 9709335..f378862 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 5d31461..b96007b 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 c5c51a3..9eb219f 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 85565e8..1d6da0a 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 67efe26..1852b9b 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() |