Patch 8.0.1798
Problem: MS-Windows: file considered read-only when another program has
opened it.
Solution: Pass file sharing flag to CreateFile(). (Linwei, closes #2860)
Files: src/os_win32.c
*** ../vim-8.0.1797/src/os_win32.c 2018-05-05 14:29:02.425738226 +0200
--- src/os_win32.c 2018-05-06 17:05:39.425707385 +0200
***************
*** 6847,6853 ****
mch_access(char *n, int p)
{
HANDLE hFile;
- DWORD am;
int retval = -1; /* default: fail */
#ifdef FEAT_MBYTE
WCHAR *wn = NULL;
--- 6847,6852 ----
***************
*** 6931,6946 ****
}
else
{
/* Trying to open the file for the required access does ACL, read-only
* network share, and file attribute checks. */
! am = ((p & W_OK) ? GENERIC_WRITE : 0)
! | ((p & R_OK) ? GENERIC_READ : 0);
#ifdef FEAT_MBYTE
if (wn != NULL)
! hFile = CreateFileW(wn, am, 0, NULL, OPEN_EXISTING, 0, NULL);
else
#endif
! hFile = CreateFile(n, am, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hFile == INVALID_HANDLE_VALUE)
goto getout;
CloseHandle(hFile);
--- 6930,6951 ----
}
else
{
+ // Don't consider a file read-only if another process has opened it.
+ DWORD share_mode = FILE_SHARE_READ | FILE_SHARE_WRITE;
+
/* Trying to open the file for the required access does ACL, read-only
* network share, and file attribute checks. */
! DWORD access_mode = ((p & W_OK) ? GENERIC_WRITE : 0)
! | ((p & R_OK) ? GENERIC_READ : 0);
!
#ifdef FEAT_MBYTE
if (wn != NULL)
! hFile = CreateFileW(wn, access_mode, share_mode,
! NULL, OPEN_EXISTING, 0, NULL);
else
#endif
! hFile = CreateFile(n, access_mode, share_mode,
! NULL, OPEN_EXISTING, 0, NULL);
if (hFile == INVALID_HANDLE_VALUE)
goto getout;
CloseHandle(hFile);
*** ../vim-8.0.1797/src/version.c 2018-05-06 16:40:12.239619606 +0200
--- src/version.c 2018-05-06 17:07:47.445003215 +0200
***************
*** 763,764 ****
--- 763,766 ----
{ /* Add new patch number below this line */
+ /**/
+ 1798,
/**/
--
Courtroom Quote #19:
Q: Doctor, how many autopsies have you performed on dead people?
A: All my autopsies have been performed on dead people.
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.