From b9b3d7c1377f9d7cb5b664c836203ccb0a119478 Mon Sep 17 00:00:00 2001 From: TIHan Date: Thu, 16 Jan 2020 13:02:15 -0800 Subject: [PATCH 1/2] Fixed exception that prevented creating a memory mapped file that is shadow copied --- src/absil/bytes.fs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/absil/bytes.fs b/src/absil/bytes.fs index 9ec17577937..ff236b5a876 100644 --- a/src/absil/bytes.fs +++ b/src/absil/bytes.fs @@ -307,10 +307,10 @@ type ByteMemory with mmf, mmf.CreateViewAccessor(0L, length, memoryMappedFileAccess), length match access with - | FileAccess.Read when not accessor.CanRead -> failwith "Cannot read file" - | FileAccess.Write when not accessor.CanWrite -> failwith "Cannot write file" - | _ when not accessor.CanRead || not accessor.CanWrite -> failwith "Cannot read or write file" - | _ -> () + | FileAccess.Read when not accessor.CanRead -> invalidOp "Cannot read file" + | FileAccess.Write when not accessor.CanWrite -> invalidOp "Cannot write file" + | FileAccess.ReadWrite when not accessor.CanRead || not accessor.CanWrite -> invalidOp "Cannot read or write file" + | _ -> invalidOp "Invalid file access" let safeHolder = { new obj() with From 51415b415d666ce970ac7ec20f8b7279f0a69d06 Mon Sep 17 00:00:00 2001 From: Will Smith Date: Thu, 16 Jan 2020 15:51:32 -0800 Subject: [PATCH 2/2] Update bytes.fs --- src/absil/bytes.fs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/absil/bytes.fs b/src/absil/bytes.fs index ff236b5a876..754b9d49dd6 100644 --- a/src/absil/bytes.fs +++ b/src/absil/bytes.fs @@ -306,11 +306,12 @@ type ByteMemory with leaveOpen=false) mmf, mmf.CreateViewAccessor(0L, length, memoryMappedFileAccess), length + // Validate MMF with the access that was intended. match access with | FileAccess.Read when not accessor.CanRead -> invalidOp "Cannot read file" | FileAccess.Write when not accessor.CanWrite -> invalidOp "Cannot write file" | FileAccess.ReadWrite when not accessor.CanRead || not accessor.CanWrite -> invalidOp "Cannot read or write file" - | _ -> invalidOp "Invalid file access" + | _ -> () let safeHolder = { new obj() with