diff options
| -rw-r--r-- | cmake/platforms/emscripten.cmake | 3 | ||||
| -rw-r--r-- | emcclib.js | 8 | ||||
| -rw-r--r-- | emccpre.js | 2 |
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) @@ -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 @@ -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"); |