[Bug libstdc++/80624] char_traits::eof() doesn't meet requirements

2018-11-19 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80624

Jonathan Wakely  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |8.0

--- Comment #4 from Jonathan Wakely  ---
Fixed for 8.1 and up, although it might need to be revisited as the "fix" is
nearly as surprising as the bug itself.

[Bug libstdc++/80624] char_traits::eof() doesn't meet requirements

2018-11-19 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80624

Martin Liška  changed:

   What|Removed |Added

 CC||marxin at gcc dot gnu.org

--- Comment #3 from Martin Liška  ---
Jonathan: Can you please update Known to work?

[Bug libstdc++/80624] char_traits::eof() doesn't meet requirements

2017-06-02 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80624

--- Comment #2 from Jonathan Wakely  ---
Author: redi
Date: Fri Jun  2 18:35:37 2017
New Revision: 248843

URL: https://gcc.gnu.org/viewcvs?rev=248843=gcc=rev
Log:
PR libstdc++/80624 satisfy invariant for char_traits::eof()

PR libstdc++/80624
* doc/xml/manual/status_cxx2011.xml: Document to_int_type behaviour.
* include/bits/char_traits.h (char_traits::to_int_type):
Transform eof value to U+FFFD.
* testsuite/21_strings/char_traits/requirements/char16_t/eof.cc: New.
* testsuite/27_io/basic_streambuf/sgetc/char16_t/80624.cc: New.
* testsuite/27_io/basic_streambuf/sputc/char16_t/80624.cc: New.

Added:
   
trunk/libstdc++-v3/testsuite/21_strings/char_traits/requirements/char16_t/eof.cc
trunk/libstdc++-v3/testsuite/27_io/basic_streambuf/sgetc/char16_t/
trunk/libstdc++-v3/testsuite/27_io/basic_streambuf/sgetc/char16_t/80624.cc
trunk/libstdc++-v3/testsuite/27_io/basic_streambuf/sputc/char16_t/
trunk/libstdc++-v3/testsuite/27_io/basic_streambuf/sputc/char16_t/80624.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/doc/xml/manual/status_cxx2011.xml
trunk/libstdc++-v3/include/bits/char_traits.h

[Bug libstdc++/80624] char_traits::eof() doesn't meet requirements

2017-05-08 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80624

--- Comment #1 from Jonathan Wakely  ---
Some more examples of misbehaviour caused by eof() being a valid character:

#include 
#include 

int main()
{
 std::basic_ostringstream s;
 s.put(u'\u');
 assert( s.str().length() == 1 );
}

a.out: ex.cc:8: int main(): Assertion `s.str().length() == 1' failed.
Aborted (core dumped)


#include 

int main()
{
 std::basic_ostringstream s(u"foo");
 s.exceptions(std::ios_base::badbit);
 s.put(u'\u');
}

terminate called after throwing an instance of 'std::ios_base::failure'
 what():  basic_ios::clear
Aborted (core dumped)


#include 
#include 

int main()
{
  const char16_t  = u'\u';
  std::basic_istringstream s(u"\uoo");
  s.exceptions(std::ios_base::eofbit);
  assert( s.rdbuf()->in_avail() > 1 );
  auto c = s.get();
}

terminate called after throwing an instance of 'std::ios_base::failure'
  what():  basic_ios::clear
Aborted (core dumped)

[Bug libstdc++/80624] char_traits::eof() doesn't meet requirements

2017-05-04 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80624

Jonathan Wakely  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2017-05-04
   Assignee|unassigned at gcc dot gnu.org  |redi at gcc dot gnu.org
 Ever confirmed|0   |1