aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <pcarlini@unitus.it>2002-05-15 12:27:29 +0200
committerPaolo Carlini <paolo@gcc.gnu.org>2002-05-15 10:27:29 +0000
commitbf6f276b01d364d1fe300732d39a56f4a6f4ee34 (patch)
tree6edc1cfd9b3577f9997f505281994c1aeec7b9fc
parent194734e9e5501f9a295212b91978eee396879cda (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--libstdc++-v3/include/bits/istream.tcc4
-rw-r--r--libstdc++-v3/testsuite/27_io/narrow_stream_objects.cc19
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;
}