diff options
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc | 25 |
2 files changed, 31 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 8ebe21c..fd9a6afb 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2017-08-11 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/81808 + * testsuite/27_io/basic_fstream/53984.cc: Adjust test for targets + that allow opening a directory as a FILE and reading from it. + 2017-08-09 Jonathan Wakely <jwakely@redhat.com> * include/std/type_traits (_GLIBCXX_NO_BUILTIN_HAS_UNIQ_OBJ_REP): diff --git a/libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc b/libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc index e49d2b1..a319aff 100644 --- a/libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc +++ b/libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc @@ -17,6 +17,8 @@ // { dg-require-fileio "" } +// PR libstdc++/53984 + #include <fstream> #include <testsuite_hooks.h> @@ -26,9 +28,32 @@ test01() std::ifstream in("."); if (in) { + char c; + if (in.get(c)) + { + // Reading a directory doesn't produce an error on this target + // so the formatted input functions below wouldn't fail anyway + // (see PR libstdc++/81808). + return; + } int x; + in.clear(); + // Formatted input function should set badbit, but not throw: in >> x; VERIFY( in.bad() ); + + in.clear(); + in.exceptions(std::ios::badbit); + try + { + // Formatted input function should set badbit, and throw: + in >> x; + VERIFY( false ); + } + catch (const std::exception&) + { + VERIFY( in.bad() ); + } } } |