Skip to content

Commit 401420b

Browse files
don't keep file open if everything break loose
1 parent 5520770 commit 401420b

File tree

1 file changed

+2
-5
lines changed

1 file changed

+2
-5
lines changed

src/ZMidi/Internal/ParserMonad.fs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,7 @@ module ParserMonad =
9494

9595
/// Run the parser on a file.
9696
let runParseMidi (ma : ParserMonad<'a>) (inputPath : string) : Result<'a, ParseError> =
97-
use stream = File.Open(path = inputPath, mode = FileMode.Open, access = FileAccess.Read)
98-
use memory = new MemoryStream()
99-
stream.CopyTo(memory)
100-
let input : byte [] = memory.ToArray()
97+
let input = File.ReadAllBytes inputPath
10198
match apply1 ma input { Position = 0; RunningStatus = StatusOff} with
10299
| Ok (ans, _) -> Ok ans
103100
| Error msg -> Error msg
@@ -181,7 +178,7 @@ module ParserMonad =
181178
let inline boundRepeat (n: ^T) (p: ParserMonad<'a>) : ParserMonad<'a array> =
182179
parseMidi {
183180
let l = Array.zeroCreate (int n) // can't use array expression inside a CE (at least as is)
184-
for (i: 'T) in LanguagePrimitives.GenericZero .. (n - LanguagePrimitives.GenericOne) do
181+
for (i: 'T) in LanguagePrimitives.GenericZero<'T> .. (n - LanguagePrimitives.GenericOne<'T>) do
185182
let! r = p
186183
l.[int i] <- r
187184
return l

0 commit comments

Comments
 (0)