# HG changeset patch # User Christian Brabandt # Date 1537534806 -7200 # Node ID aa9c7588d30ab08c2efec83a3ef7ad8a87efe99f # Parent edc3d702344224211c118e6c975976b0299c1c07 patch 8.1.0423: MS-Windows: using dup-close for flushing a file commit https://github.com/vim/vim/commit/0bd405173234b7d749aac144f60b68fee2135cb3 Author: Bram Moolenaar Date: Fri Sep 21 14:48:53 2018 +0200 patch 8.1.0423: MS-Windows: using dup-close for flushing a file Problem: MS-Windows: using dup-close for flushing a file. Solution: Use _commit(). (Ken Takata, closes https://github.com/vim/vim/issues/3463) diff --git a/src/memfile.c b/src/memfile.c --- a/src/memfile.c +++ b/src/memfile.c @@ -539,9 +539,6 @@ mf_sync(memfile_T *mfp, int flags) { int status; bhdr_T *hp; -#if defined(SYNC_DUP_CLOSE) - int fd; -#endif int got_int_save = got_int; if (mfp->mf_fd < 0) /* there is no file, nothing to do */ @@ -624,13 +621,9 @@ mf_sync(memfile_T *mfp, int flags) status = FAIL; } #endif -#ifdef SYNC_DUP_CLOSE - /* - * Win32 is a bit more work: Duplicate the file handle and close it. - * This should flush the file to disk. - */ - if ((fd = dup(mfp->mf_fd)) >= 0) - close(fd); +#ifdef WIN32 + if (_commit(mfp->mf_fd)) + status = FAIL; #endif #ifdef AMIGA # if defined(__AROS__) || defined(__amigaos4__) diff --git a/src/os_mac.h b/src/os_mac.h --- a/src/os_mac.h +++ b/src/os_mac.h @@ -101,7 +101,6 @@ #define HAVE_AVAIL_MEM #ifndef HAVE_CONFIG_H -/* #define SYNC_DUP_CLOSE sync() a file with dup() and close() */ # define HAVE_STRING_H # define HAVE_STRCSPN # define HAVE_MEMSET diff --git a/src/os_win32.h b/src/os_win32.h --- a/src/os_win32.h +++ b/src/os_win32.h @@ -26,7 +26,6 @@ #define BINARY_FILE_IO #define USE_EXE_NAME /* use argv[0] for $VIM */ -#define SYNC_DUP_CLOSE /* sync() a file with dup() and close() */ #define USE_TERM_CONSOLE #ifndef HAVE_STRING_H # define HAVE_STRING_H diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -795,6 +795,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 423, +/**/ 422, /**/ 421,