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