]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix write-region to null device on MS-Windows
authorEli Zaretskii <eliz@gnu.org>
Wed, 21 Dec 2022 19:23:51 +0000 (21:23 +0200)
committerEli Zaretskii <eliz@gnu.org>
Wed, 21 Dec 2022 19:23:51 +0000 (21:23 +0200)
* src/fileio.c (write_region) [WINDOWSNT]: Ignore EBADF errors
from fsync -- this means fsync is not supported for this file.
Happens, for example, with the null device.  (Bug#59545)

src/fileio.c

index 835c42cc0a4368ba366faf93501e2f3a9526432f..31353be5d5a0ff8181d552dddce1b76d9ce686dc 100644 (file)
@@ -5387,12 +5387,16 @@ write_region (Lisp_Object start, Lisp_Object end, Lisp_Object filename,
     {
       /* Transfer data and metadata to disk, retrying if interrupted.
         fsync can report a write failure here, e.g., due to disk full
-        under NFS.  But ignore EINVAL, which means fsync is not
-        supported on this file.  */
+        under NFS.  But ignore EINVAL (and EBADF on Windows), which
+        means fsync is not supported on this file.  */
       while (fsync (desc) != 0)
        if (errno != EINTR)
          {
-           if (errno != EINVAL)
+           if (errno != EINVAL
+#ifdef WINDOWSNT
+               && errno != EBADF
+#endif
+               )
              ok = 0, save_errno = errno;
            break;
          }