Skip to content

Commit 2ee87db

Browse files
committed
[library_sockfs.js] Use callUserCallback. NFC
This is essentially a no-op but uses common code to handle exceptions during user callbacks.
1 parent eff9671 commit 2ee87db

File tree

1 file changed

+12
-15
lines changed

1 file changed

+12
-15
lines changed

src/library_sockfs.js

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -728,29 +728,26 @@ addToLibrary({
728728
* Passing a NULL callback function to a emscripten_set_socket_*_callback call
729729
* will deregister the callback registered for that Event.
730730
*/
731-
$_setNetworkCallback__deps: ['$stackSave', '$stackRestore', '$stringToUTF8OnStack'],
731+
$_setNetworkCallback__deps: ['$withStackSave', '$callUserCallback', '$stringToUTF8OnStack'],
732732
$_setNetworkCallback: (event, userData, callback) => {
733733
function _callback(data) {
734-
try {
734+
callUserCallback(() => {
735735
if (event === 'error') {
736-
var sp = stackSave();
737-
var msg = stringToUTF8OnStack(data[2]);
738-
{{{ makeDynCall('viiii', 'callback') }}}(data[0], data[1], msg, userData);
739-
stackRestore(sp);
736+
withStackSave(() => {
737+
var msg = stringToUTF8OnStack(data[2]);
738+
{{{ makeDynCall('viiii', 'callback') }}}(data[0], data[1], msg, userData);
739+
});
740740
} else {
741741
{{{ makeDynCall('vii', 'callback') }}}(data, userData);
742742
}
743-
} catch (e) {
744-
if (!(e instanceof ExitStatus)) {
745-
if (e && typeof e == 'object' && e.stack) err('exception thrown: ' + [e, e.stack]);
746-
throw e;
747-
}
748-
}
743+
});
749744
};
750745

751-
// FIXME(sbc): This has no corresponding Pop so will currently keep the
752-
// runtime alive indefinitely.
753-
{{{ runtimeKeepalivePush() }}}
746+
if (callback) {
747+
{{{ runtimeKeepalivePush() }}}
748+
} else {
749+
{{{ runtimeKeepalivePop() }}}
750+
}
754751
SOCKFS.on(event, callback ? _callback : null);
755752
},
756753
emscripten_set_socket_error_callback__deps: ['$_setNetworkCallback'],

0 commit comments

Comments
 (0)