diff options
Diffstat (limited to 'libstdc++-v3/config/io/basic_file_stdio.cc')
-rw-r--r-- | libstdc++-v3/config/io/basic_file_stdio.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/libstdc++-v3/config/io/basic_file_stdio.cc b/libstdc++-v3/config/io/basic_file_stdio.cc index e7367016504..eeb1e5e94b6 100644 --- a/libstdc++-v3/config/io/basic_file_stdio.cc +++ b/libstdc++-v3/config/io/basic_file_stdio.cc @@ -195,11 +195,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __basic_file* __ret = NULL; if (!this->is_open() && __file) { - int __err; + int __err, __save_errno = errno; + // POSIX guarantees that fflush sets errno on error, but C doesn't. errno = 0; do - __err = this->sync(); + __err = fflush(__file); while (__err && errno == EINTR); + errno = __save_errno; if (!__err) { _M_cfile = __file; |