diff options
author | Paolo Carlini <pcarlini@unitus.it> | 2002-05-15 12:27:29 +0200 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2002-05-15 10:27:29 +0000 |
commit | bf6f276b01d364d1fe300732d39a56f4a6f4ee34 (patch) | |
tree | 6edc1cfd9b3577f9997f505281994c1aeec7b9fc | |
parent | 194734e9e5501f9a295212b91978eee396879cda (diff) | |
download | gcc-bf6f276b01d364d1fe300732d39a56f4a6f4ee34.zip gcc-bf6f276b01d364d1fe300732d39a56f4a6f4ee34.tar.gz gcc-bf6f276b01d364d1fe300732d39a56f4a6f4ee34.tar.bz2 |
re PR libstdc++/6648 (Problems with cin.getline (interactive))
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.
From-SVN: r53481
-rw-r--r-- | libstdc++-v3/ChangeLog | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/istream.tcc | 4 | ||||
-rw-r--r-- | libstdc++-v3/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 52007d5..d6fc098 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 636a738..f7f8d69 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 016a982..f767b72 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; } |