| Index: runtime/bin/file_win.cc
|
| diff --git a/runtime/bin/file_win.cc b/runtime/bin/file_win.cc
|
| index db3aef81d2237192dd39c8795b1fdc9ba29ece35..8d45a177dec65a4935ba03d95d451d29f2cd6868 100644
|
| --- a/runtime/bin/file_win.cc
|
| +++ b/runtime/bin/file_win.cc
|
| @@ -138,9 +138,15 @@ bool File::Lock(File::LockType lock, int64_t start, int64_t end) {
|
| rc = UnlockFileEx(handle, 0, length_low, length_high, &overlapped);
|
| break;
|
| case File::kLockShared:
|
| - case File::kLockExclusive: {
|
| - DWORD flags = LOCKFILE_FAIL_IMMEDIATELY;
|
| - if (lock == File::kLockExclusive) {
|
| + case File::kLockExclusive:
|
| + case File::kLockBlockingShared:
|
| + case File::kLockBlockingExclusive: {
|
| + DWORD flags = 0;
|
| + if ((lock == File::kLockShared) || (lock == File::kLockExclusive)) {
|
| + flags |= LOCKFILE_FAIL_IMMEDIATELY;
|
| + }
|
| + if ((lock == File::kLockExclusive) ||
|
| + (lock == File::kLockBlockingExclusive)) {
|
| flags |= LOCKFILE_EXCLUSIVE_LOCK;
|
| }
|
| rc = LockFileEx(handle, flags, 0,
|
|
|