basic_file_stdio.cc (__basic_file<>::close)): Don't call unnecessarily sync, that...
authorPaolo Carlini <pcarlini@suse.de>
Fri, 17 Sep 2004 08:42:07 +0000 (08:42 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Fri, 17 Sep 2004 08:42:07 +0000 (08:42 +0000)
2004-09-17  Paolo Carlini  <pcarlini@suse.de>
    Andrea Arcangeli  <andrea@suse.de>

* config/io/basic_file_stdio.cc (__basic_file<>::close)): Don't
call unnecessarily sync, that is fflush: the library, since 3.4.0
does not use buffered fread/fwrite.
* include/bits/fstream.tcc (basic_filebuf<>::overflow): Likewise.

Co-Authored-By: Andrea Arcangeli <andrea@suse.de>
From-SVN: r87636

libstdc++-v3/ChangeLog
libstdc++-v3/config/io/basic_file_stdio.cc
libstdc++-v3/include/bits/fstream.tcc

index 4598b25903ef99b1e18c4c336df0b3daf1e3be37..acc46b7349b5934d416dfa4739ad98c5cb18b6ae 100644 (file)
@@ -1,3 +1,11 @@
+2004-09-17  Paolo Carlini  <pcarlini@suse.de>
+           Andrea Arcangeli  <andrea@suse.de>
+
+       * config/io/basic_file_stdio.cc (__basic_file<>::close)): Don't
+       call unnecessarily sync, that is fflush: the library, since 3.4.0
+       does not use buffered fread/fwrite.
+       * include/bits/fstream.tcc (basic_filebuf<>::overflow): Likewise.
+
 2004-09-15  Mark Mitchell  <mark@codesourcery.com>
 
        * config/cpu/arm/cxxabi_tweaks.h (__cxa_cdtor_return_type):
index 680220bc4c582766c76e35bb1c20217a4b99b5b7..0a4e154ebbc9c054c953cc076a27775ef08f33d6 100644 (file)
@@ -259,23 +259,21 @@ namespace std
     __basic_file* __ret = static_cast<__basic_file*>(NULL);
     if (this->is_open())
       {
-       // In general, no need to zero errno in advance if checking
-       // for error first. However, C89/C99 (at variance with IEEE
-       // 1003.1, f.i.) do not mandate that fclose/fflush must set
-       // errno upon error.
-       int __err;
-       errno = 0;
+       int __err = 0;
        if (_M_cfile_created)
-         do
-           __err = fclose(_M_cfile);
-         while (__err && errno == EINTR);
-       else
-         do
-           __err = this->sync();
-         while (__err && errno == EINTR);
+         {
+           // In general, no need to zero errno in advance if checking
+           // for error first. However, C89/C99 (at variance with IEEE
+           // 1003.1, f.i.) do not mandate that fclose must set errno
+           // upon error.
+           errno = 0;
+           do
+             __err = fclose(_M_cfile);
+           while (__err && errno == EINTR);
+         }
+       _M_cfile = 0;
        if (!__err)
          __ret = this;
-       _M_cfile = 0;
       }
     return __ret;
   }
index c24d4cac49fc3b17e1237835a434214d12f4bb37..d3ea37ffab11e79b8e93922ad0e467c87692fe8d 100644 (file)
@@ -396,8 +396,7 @@ namespace std
              // Convert pending sequence to external representation,
              // and output.
              if (_M_convert_to_external(this->pbase(),
-                                        this->pptr() - this->pbase())
-                 && (!__testeof || !_M_file.sync()))
+                                        this->pptr() - this->pbase()))
                {
                  _M_set_buffer(0);
                  __ret = traits_type::not_eof(__c);
@@ -792,7 +791,6 @@ namespace std
     {
       // Make sure that the internal buffer resyncs its idea of
       // the file position with the external file.
-      // NB: _M_file.sync() will be called within.
       int __ret = 0;
       if (this->pbase() < this->pptr())
        {