From ecb04c6b7fbf5d06c2fdce5128e83575cac2bd21 Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Fri, 23 May 2025 17:06:02 +0200 Subject: Web version (work in progress) --- web/callback.js | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) (limited to 'web/callback.js') diff --git a/web/callback.js b/web/callback.js index 1b3028e..178b8e9 100644 --- a/web/callback.js +++ b/web/callback.js @@ -2,20 +2,44 @@ addToLibrary({ cbfl: [], +validateCallbackId__deps: [ 'cbfl' ], +validateCallbackId: function(i) { + if (i < 0) { + console.log("--- WARNING ---"); + console.log("Trying to access callback function of invalid id " + i); + console.log("--- WARNING ---"); + return false; + } + + if (i >= _cbfl.length) { + console.log("--- WARNING ---"); + console.log("Trying to access callback function " + i + ", but only " + + _cbfl.length + " have been registered. This may be caused by a " + + "call outside of the main thread."); + console.log("--- WARNING ---"); + return false; + } + + return true; +}, + addCallbackFunction__deps: [ 'cbfl' ], addCallbackFunction: function(f) { _cbfl.push(f) return _cbfl.length - 1 }, -callFunction__deps: [ 'cbfl' ], +callFunction__deps: [ 'cbfl', 'validateCallbackId' ], callFunction: function(id, arg) { - _cbfl[id](UTF8ToString(arg)) + if (_validateCallbackId(id)) + _cbfl[id](UTF8ToString(arg)); }, -callFunctionInt__deps: [ 'cbfl' ], +callFunctionInt__deps: [ 'cbfl', 'validateCallbackId' ], callFunctionInt: function(id) { - return _cbfl[id]() + if (_validateCallbackId(id)) + return _cbfl[id](); + return 0; }, }); -- cgit v1.3