From 054d9772587a9abf3179ea9e971c71d84be85143 Mon Sep 17 00:00:00 2001 From: kojix2 <2xijok@gmail.com> Date: Fri, 22 Aug 2025 09:21:21 +0900 Subject: [PATCH] unix: Fix uiDateTimePicker segmentation fault on destroy Add custom destroy function to properly disconnect signals and release GTK+ resources, preventing Use-After-Free crashes during widget destruction. --- unix/datetimepicker.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/unix/datetimepicker.c b/unix/datetimepicker.c index 8ca3a274..698fa945 100644 --- a/unix/datetimepicker.c +++ b/unix/datetimepicker.c @@ -561,7 +561,20 @@ struct uiDateTimePicker { gulong setBlock; }; -uiUnixControlAllDefaults(uiDateTimePicker) +uiUnixControlAllDefaultsExceptDestroy(uiDateTimePicker) + +static void uiDateTimePickerDestroy(uiControl *c) +{ + uiDateTimePicker *d = uiDateTimePicker(c); + + hidePopup(d->d); + if (d->setBlock != 0) { + g_signal_handler_disconnect(d->d, d->setBlock); + d->setBlock = 0; + } + g_object_unref(d->widget); + uiFreeControl(uiControl(d)); +} static void defaultOnChanged(uiDateTimePicker *d, void *data) {