From c6abbdee92245b2633b661a1ca9ff76120ce46bb Mon Sep 17 00:00:00 2001 From: paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 15 May 2002 10:27:29 +0000 Subject: [PATCH] 2002-05-15 Paolo Carlini <pcarlini@unitus.it> PR libstdc++/6648 * include/bits/istream.tcc (istream::getline, ignore): Upon __idelim (__delim) call sbumpc() not snextc(). * testsuite/27_io/narrow_stream_objects.cc: Add test08 and test09. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@53481 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 8 ++++++++ libstdc++-v3/include/bits/istream.tcc | 4 ++-- .../testsuite/27_io/narrow_stream_objects.cc | 19 +++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 52007d5fdc32..d6fc09814d29 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2002-05-15 Paolo Carlini <pcarlini@unitus.it> + + PR libstdc++/6648 + * include/bits/istream.tcc (istream::getline, ignore): + Upon __idelim (__delim) call sbumpc() not snextc(). + * testsuite/27_io/narrow_stream_objects.cc: + Add test08 and test09. + 2002-05-13 Benjamin Kosnik <bkoz@redhat.com> * testsuite/22_locale/ctype_scan_char.cc: Tweak. diff --git a/libstdc++-v3/include/bits/istream.tcc b/libstdc++-v3/include/bits/istream.tcc index 636a73863598..f7f8d6977891 100644 --- a/libstdc++-v3/include/bits/istream.tcc +++ b/libstdc++-v3/include/bits/istream.tcc @@ -679,7 +679,7 @@ namespace std { if (__c == __idelim) { - __sb->snextc(); + __sb->sbumpc(); ++_M_gcount; } else @@ -726,7 +726,7 @@ namespace std this->setstate(ios_base::eofbit); else if (__c == __delim) { - __sb->snextc(); + __sb->sbumpc(); ++_M_gcount; } } diff --git a/libstdc++-v3/testsuite/27_io/narrow_stream_objects.cc b/libstdc++-v3/testsuite/27_io/narrow_stream_objects.cc index 016a982c8efc..f767b7248713 100644 --- a/libstdc++-v3/testsuite/27_io/narrow_stream_objects.cc +++ b/libstdc++-v3/testsuite/27_io/narrow_stream_objects.cc @@ -175,6 +175,23 @@ void test07() VERIFY( s == "test" ); } +// libstdc++/6648 +// Interactive tests: each one (run alone) must terminate upon a single '\n'. +void test08() +{ + bool test = true; + char buff[2048]; + std::cout << "Enter name: "; + std::cin.getline(buff, 2048); +} + +void test09() +{ + bool test = true; + std::cout << "Enter name: "; + std::cin.ignore(2048, '\n'); +} + int main() { @@ -186,5 +203,7 @@ main() // test05(); // test06(); // test07(); + // test08(); + // test09(); return 0; } -- GitLab