aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmake/platforms/emscripten.cmake3
-rw-r--r--emcclib.js8
-rw-r--r--emccpre.js2
3 files changed, 11 insertions, 2 deletions
diff --git a/cmake/platforms/emscripten.cmake b/cmake/platforms/emscripten.cmake
index d74217f..b7e9c7d 100644
--- a/cmake/platforms/emscripten.cmake
+++ b/cmake/platforms/emscripten.cmake
@@ -49,6 +49,9 @@ set(emcc_export_list
_rescale_puzzle
# Callback for loading user preferences
_prefs_load_callback
+ # Functions for allocating and freeing C memory
+ _malloc
+ _free
# Main program, run at initialisation time
_main)
diff --git a/emcclib.js b/emcclib.js
index bd4762d..d8ef57f 100644
--- a/emcclib.js
+++ b/emcclib.js
@@ -827,7 +827,13 @@ mergeInto(LibraryManager.library, {
var prefsdata =
localStorage.getItem(location.pathname + " preferences");
if (prefsdata !== undefined && prefsdata !== null) {
- prefs_load_callback(me, prefsdata);
+ var lenbytes = lengthBytesUTF8(prefsdata) + 1;
+ var dest = _malloc(lenbytes);
+ if (dest != 0) {
+ stringToUTF8(prefsdata, dest, lenbytes);
+ prefs_load_callback(me, dest);
+ _free(dest);
+ }
}
} catch (error) {
// Log the error but otherwise pretend the settings were
diff --git a/emccpre.js b/emccpre.js
index a114ce1..842a392 100644
--- a/emccpre.js
+++ b/emccpre.js
@@ -693,7 +693,7 @@ function initPuzzle() {
['number','number']);
timer_callback = Module.cwrap('timer_callback', 'void', ['number']);
prefs_load_callback = Module.cwrap('prefs_load_callback', 'void',
- ['number','string']);
+ ['number','number']);
if (resizable_div !== null) {
var resize_handle = document.getElementById("resizehandle");