pyodide/emsdk/patches/0001-Add-back-fs.findObject...

45 lines
1.6 KiB
Diff

From 137dae4dbdf9a192551582cdae827b085510956f Mon Sep 17 00:00:00 2001
From: Hood Chatham <roberthoodchatham@gmail.com>
Date: Fri, 2 Jun 2023 11:59:32 -0700
Subject: [PATCH 1/6] Add back fs.findObject and fs.readFile in loadLibData
See upstream PR:
https://github.com/emscripten-core/emscripten/pull/19513
---
src/library_dylink.js | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/src/library_dylink.js b/src/library_dylink.js
index aa90bea2b..1e67818a1 100644
--- a/src/library_dylink.js
+++ b/src/library_dylink.js
@@ -994,14 +994,23 @@ var LibraryDylink = {
#endif
// for wasm, we can use fetch for async, but for fs mode we can only imitate it
+ var libData;
if (handle) {
var data = {{{ makeGetValue('handle', C_STRUCTS.dso.file_data, '*') }}};
var dataSize = {{{ makeGetValue('handle', C_STRUCTS.dso.file_data_size, '*') }}};
if (data && dataSize) {
- var libData = HEAP8.slice(data, data + dataSize);
- return flags.loadAsync ? Promise.resolve(libData) : libData;
+ libData = HEAP8.slice(data, data + dataSize);
}
}
+ if (!libData && flags.fs && flags.fs.findObject(libName)) {
+ libData = flags.fs.readFile(libName, {encoding: 'binary'});
+ if (!(libData instanceof Uint8Array)) {
+ libData = new Uint8Array(libData);
+ }
+ }
+ if (libData) {
+ return flags.loadAsync ? Promise.resolve(libData) : libData;
+ }
var libFile = locateFile(libName);
if (flags.loadAsync) {
--
2.34.1