gcc/libstdc++-v3/testsuite/27_io
Jonathan Wakely 4e39f563c0 libstdc++: Do not set eofbit eagerly in operator>>(istream&, char(&)[N])
Similar to the bugs I fixed recently in istream::ignore, we incorrectly
set eofbit too often in operator>>(istream&, string&) and
operator>>(istream&.  char(&)[N]).

We should only set eofbit if we reach EOF but would have kept going
otherwise. If we've already extracted the maximum number of characters
(whether that's because of the buffer size or the istream's width())
then we should not set eofbit.

libstdc++-v3/ChangeLog:

	* include/bits/basic_string.tcc
	(operator>>(basic_istream&, basic_string&)): Do not set eofbit
	if extraction stopped after in.width() characters.
	* src/c++98/istream-string.cc (operator>>(istream&, string&)):
	Likewise.
	* include/bits/istream.tcc (__istream_extract): Do not set
	eofbit if extraction stopped after n-1 characters.
	* src/c++98/istream.cc (__istream_extract): Likewise.
	* testsuite/21_strings/basic_string/inserters_extractors/char/13.cc: New test.
	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/13.cc: New test.
	* testsuite/27_io/basic_istream/extractors_character/char/5.cc: New test.
	* testsuite/27_io/basic_istream/extractors_character/wchar_t/5.cc: New test.
2020-08-06 19:23:14 +01:00
..
basic_filebuf Update copyright years. 2020-01-01 12:51:42 +01:00
basic_fstream Update copyright years. 2020-01-01 12:51:42 +01:00
basic_ifstream Update copyright years. 2020-01-01 12:51:42 +01:00
basic_ios libstdc++: Require c++98_only effective target for a test 2020-07-02 21:27:22 +01:00
basic_iostream Update copyright years. 2020-01-01 12:51:42 +01:00
basic_istream libstdc++: Do not set eofbit eagerly in operator>>(istream&, char(&)[N]) 2020-08-06 19:23:14 +01:00
basic_istringstream Update copyright years. 2020-01-01 12:51:42 +01:00
basic_ofstream Update copyright years. 2020-01-01 12:51:42 +01:00
basic_ostream libstdc++: Ensure c++NN effective target present in all C++17 tests 2020-07-31 19:58:02 +01:00
basic_ostringstream Update copyright years. 2020-01-01 12:51:42 +01:00
basic_streambuf Update copyright years. 2020-01-01 12:51:42 +01:00
basic_stringbuf Update copyright years. 2020-01-01 12:51:42 +01:00
basic_stringstream Update copyright years. 2020-01-01 12:51:42 +01:00
filesystem libstdc++: Simplify filesystem::path SFINAE constraints 2020-05-23 09:40:16 +01:00
fpos tolerate padding in mbstate_t 2020-01-23 16:36:34 -03:00
headers libstdc++: Require c++98_only effective target for some tests 2020-07-02 21:27:12 +01:00
ios_base Update copyright years. 2020-01-01 12:51:42 +01:00
manipulators Update copyright years. 2020-01-01 12:51:42 +01:00
objects Update copyright years. 2020-01-01 12:51:42 +01:00
types Update copyright years. 2020-01-01 12:51:42 +01:00
rvalue_streams-2.cc Update copyright years. 2020-01-01 12:51:42 +01:00
rvalue_streams.cc Update copyright years. 2020-01-01 12:51:42 +01:00