diff options
author | Linus Groh <mail@linusgroh.de> | 2022-10-04 21:00:08 +0100 |
---|---|---|
committer | Linus Groh <mail@linusgroh.de> | 2022-10-05 09:12:59 +0100 |
commit | 25909dcc051db82bf7ab4e554a8eb8ec8b173863 (patch) | |
tree | 5b1cfbea2653cd57e4b8ed2738a25daf65202148 /Userland/Libraries/LibMarkdown/Table.cpp | |
parent | 2af028132adca1ae9fbb81a655a9ce00420d8ad4 (diff) | |
download | serenity-25909dcc051db82bf7ab4e554a8eb8ec8b173863.zip |
LibWeb: Prepare to run callback in host_enqueue_promise_job()
...and clean up afterwards, of course. Additionally to preparing to run
a script, we also prepare to run a callback here. This matches WebIDL's
invoke_callback() / call_user_object_operation() functions, and prevents
a crash in host_make_job_callback() when getting the incumbent settings
object.
Running the following JS no longer crashes after this change:
```js
new Promise((resolve) => {
setTimeout(resolve, 0);
}).then(() => {
return Promise.reject();
});
```
See further discussion/investigation here:
https://discord.com/channels/830522505605283862/830525031720943627/995019647214694511
https://discord.com/channels/830522505605283862/830525031720943627/1026824624358576158
https://discord.com/channels/830522505605283862/830525031720943627/1026922985581457458
Many thanks to Luke for doing the hard work here, tracking this down,
and suggesting the fix!
Co-authored-by: Luke Wilde <lukew@serenityos.org>
Diffstat (limited to 'Userland/Libraries/LibMarkdown/Table.cpp')
0 files changed, 0 insertions, 0 deletions