Skip to content

Commit eb27bde

Browse files
Fix module file reading on Windows
`open` on Windows uses "text-mode", so we need to explicitly specify O_BINARY.
1 parent bfa006b commit eb27bde

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

Sources/WasmKit/ModuleParser.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,15 @@ import WasmParser
44
/// Parse a given file as a WebAssembly binary format file
55
/// > Note: <https://webassembly.github.io/spec/core/binary/index.html>
66
public func parseWasm(filePath: FilePath, features: WasmFeatureSet = .default) throws -> Module {
7-
let fileHandle = try FileDescriptor.open(filePath, .readOnly)
7+
#if os(Windows)
8+
// TODO: Upstream `O_BINARY` to `SystemPackage
9+
let accessMode = FileDescriptor.AccessMode(
10+
rawValue: FileDescriptor.AccessMode.readOnly.rawValue | O_BINARY
11+
)
12+
#else
13+
let accessMode: FileDescriptor.AccessMode = .readOnly
14+
#endif
15+
let fileHandle = try FileDescriptor.open(filePath, accessMode)
816
defer { try? fileHandle.close() }
917
let stream = try FileHandleStream(fileHandle: fileHandle)
1018
let module = try parseModule(stream: stream, features: features)

0 commit comments

Comments
 (0)