1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 16:57:35 +00:00

LibGUI: Fix crash in GML Playground auto-completing SpinBox props

Crash was caused by deferred invocation of a lambda on the SpinBox's
TextEditor widget's on_change. The lambda referenced the SpinBox ptr,
but in GML Playground the SpinBox was free'd before the deferred
lambda could run, causing a use-after-free error. Fixed by using
a weak ptr to detect if the SpinBox was free'd.
This commit is contained in:
Andrew Smith 2022-03-08 01:41:09 -06:00 committed by Andreas Kling
parent 9246ad96b3
commit 31a2ac94c7

View file

@ -18,7 +18,10 @@ SpinBox::SpinBox()
set_fixed_height(22);
m_editor = add<TextBox>();
m_editor->set_text("0");
m_editor->on_change = [this] {
m_editor->on_change = [this, weak_this = make_weak_ptr()] {
if (!weak_this)
return;
auto value = m_editor->text().to_uint();
if (value.has_value())
set_value(value.value());