aboutsummaryrefslogtreecommitdiff
path: root/ext/wasm/api
diff options
context:
space:
mode:
Diffstat (limited to 'ext/wasm/api')
-rw-r--r--ext/wasm/api/sqlite3-api-glue.js3
-rw-r--r--ext/wasm/api/sqlite3-wasm.c13
2 files changed, 14 insertions, 2 deletions
diff --git a/ext/wasm/api/sqlite3-api-glue.js b/ext/wasm/api/sqlite3-api-glue.js
index e88694fa3..239af7c9a 100644
--- a/ext/wasm/api/sqlite3-api-glue.js
+++ b/ext/wasm/api/sqlite3-api-glue.js
@@ -809,6 +809,9 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
capi[e[0]] = e[1];
}
}
+ /* Exporting SQLITE_WASM_DEALLOC via the wasm.ctype entries fails
+ in Safari. One final thing to try: */
+ capi.SQLITE_WASM_DEALLOC = wasm.exports.sqlite3_wasm_ptr_to_sqlite3_free();
if(wasm.exports[sqlite3.config.deallocExportName]
!== wasm.functionEntry(capi.SQLITE_WASM_DEALLOC)){
toss("Internal error: sqlite3.wasm.exports["+
diff --git a/ext/wasm/api/sqlite3-wasm.c b/ext/wasm/api/sqlite3-wasm.c
index 981fad92b..2b912c1dc 100644
--- a/ext/wasm/api/sqlite3-wasm.c
+++ b/ext/wasm/api/sqlite3-wasm.c
@@ -463,9 +463,13 @@ const char * sqlite3_wasm_enum_json(void){
DefGroup(blobFinalizers) {
/* SQLITE_STATIC/TRANSIENT need to be handled explicitly as
** integers to avoid casting-related warnings. */
- out("\"SQLITE_STATIC\":0, \"SQLITE_TRANSIENT\":-1,");
- outf("\"SQLITE_WASM_DEALLOC\": %lld",
+ out("\"SQLITE_STATIC\":0, \"SQLITE_TRANSIENT\":-1");
+#if 0
+ /* This approach to exporting SQLITE_WASM_DEALLOC as a pointer to
+ sqlite3_free fails in Safari. */
+ outf(",\"SQLITE_WASM_DEALLOC\": %lld",
(sqlite3_int64)(sqlite3_free));
+#endif
} _DefGroup;
DefGroup(changeset){
@@ -1593,6 +1597,11 @@ int sqlite3_wasm_config_j(int op, sqlite3_int64 arg){
return sqlite3_config(op, arg);
}
+SQLITE_WASM_KEEP
+void * sqlite3_wasm_ptr_to_sqlite3_free(void){
+ return (void*)sqlite3_free;
+}
+
#if defined(__EMSCRIPTEN__) && defined(SQLITE_ENABLE_WASMFS)
#include <emscripten/wasmfs.h>