Charles Davis : kernel32: Make CopyFile(Ex)() succeed even if the source file is delete-locked.
Alexandre Julliard
julliard at winehq.org
Fri Jan 18 12:07:36 CST 2013
Module: wine
Branch: master
Commit: 5a3ff7ccc17e3d6a5651761dd89c6989ea5471eb
URL: http://source.winehq.org/git/wine.git/?a=commit;h=5a3ff7ccc17e3d6a5651761dd89c6989ea5471eb
Author: Charles Davis <cdavis5x at gmail.com>
Date: Thu Jan 17 13:28:44 2013 -0700
kernel32: Make CopyFile(Ex)() succeed even if the source file is delete-locked.
---
dlls/kernel32/path.c | 3 ++-
dlls/kernel32/tests/file.c | 4 ++--
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/dlls/kernel32/path.c b/dlls/kernel32/path.c
index e42b05b..1cfd850 100644
--- a/dlls/kernel32/path.c
+++ b/dlls/kernel32/path.c
@@ -957,7 +957,8 @@ BOOL WINAPI CopyFileExW(LPCWSTR source, LPCWSTR dest,
TRACE("%s -> %s, %x\n", debugstr_w(source), debugstr_w(dest), flags);
- if ((h1 = CreateFileW(source, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
+ if ((h1 = CreateFileW(source, GENERIC_READ,
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL, OPEN_EXISTING, 0, 0)) == INVALID_HANDLE_VALUE)
{
WARN("Unable to open source %s\n", debugstr_w(source));
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c
index ce25cb9..3216fa5 100644
--- a/dlls/kernel32/tests/file.c
+++ b/dlls/kernel32/tests/file.c
@@ -652,11 +652,11 @@ static void test_CopyFileA(void)
"copying from an r+w opened and r shared file failed (ret=%d, err=%d)\n", retok, GetLastError());
CloseHandle(hfile);
- /* copying from a delete-locked source is unreliable */
+ /* copying from a delete-locked source mostly succeeds */
hfile = CreateFileA(source, DELETE, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0);
ok(hfile != INVALID_HANDLE_VALUE, "failed to open source file, error %d\n", GetLastError());
retok = CopyFileA(source, dest, FALSE);
- ok((!retok && GetLastError() == ERROR_SHARING_VIOLATION) || broken(retok) /* 98, Vista, 2k8, 7 */,
+ ok(retok || broken(!retok && GetLastError() == ERROR_SHARING_VIOLATION) /* NT, 2000, XP */,
"copying from a delete-locked file failed (ret=%d, err=%d)\n", retok, GetLastError());
CloseHandle(hfile);
More information about the wine-cvs
mailing list