diff options
author | Eli Zaretskii <eliz@gnu.org> | 2022-12-21 21:23:51 +0200 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2022-12-21 21:23:51 +0200 |
commit | ec9fbad908d5f65f71717506d070a40acca89f5b (patch) | |
tree | b056ca7ff98b87b9bb1b5464f7117f734c5cae30 /src/fileio.c | |
parent | f35da111990e17eea84febcff35763c40d3e393a (diff) | |
download | emacs-ec9fbad908d5f65f71717506d070a40acca89f5b.tar.gz |
Fix write-region to null device on MS-Windows
* 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)
Diffstat (limited to 'src/fileio.c')
-rw-r--r-- | src/fileio.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/fileio.c b/src/fileio.c index 835c42cc0a4..31353be5d5a 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -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; } |