1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-30 23:28:12 +00:00

LibGUI: Resolve use-after-free error

Objects taken by reference are no longer valid when used in
`deferred_invoke`. Explicitly copying them solve the issue.
This commit is contained in:
Lucas CHOLLET 2023-03-21 21:57:08 -04:00 committed by Andreas Kling
parent 2a410f8985
commit a9cc61224d

View file

@ -729,7 +729,7 @@ bool FileSystemModel::fetch_thumbnail_for(Node const& node)
auto const on_error = [path, update_progress](Error error) -> void {
// Note: We need to defer that to avoid the function removing its last reference
// i.e. trying to destroy itself, which is prohibited.
Core::EventLoop::current().deferred_invoke([&] {
Core::EventLoop::current().deferred_invoke([path, error = Error::copy(error)]() mutable {
s_thumbnail_cache.with_locked([path, error = move(error)](auto& cache) {
if (error != Error::from_errno(ECANCELED)) {
cache.thumbnail_cache.set(path, nullptr);