From bd4458d71ebbce81f487397e28d30aad9afb26e9 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 29 Apr 2026 14:16:24 +0600 Subject: [PATCH] Test fix for crash --- source/ubl-settings-datetime.c | 62 ++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/source/ubl-settings-datetime.c b/source/ubl-settings-datetime.c index 6354697..5a0006f 100644 --- a/source/ubl-settings-datetime.c +++ b/source/ubl-settings-datetime.c @@ -266,39 +266,41 @@ void yon_interface_update(main_window *widgets){ } GTimeZone *tz = g_time_zone_new_identifier(config(ZONE_parameter)); - GDateTime *datetime = g_date_time_new_now(tz); - char *time = g_date_time_format(datetime,"%H %M"); - char *format = yon_settings_configuration_get(date_format_parameter); - char *date = g_date_time_format(datetime,format?format:"%d.%m.%Y"); - gtk_calendar_select_month(GTK_CALENDAR(widgets->DateCalendar),g_date_time_get_month(datetime)-1,g_date_time_get_year(datetime)); - gtk_calendar_select_day(GTK_CALENDAR(widgets->DateCalendar),g_date_time_get_day_of_month(datetime)); - g_date_time_unref(datetime); - g_time_zone_unref(tz); + if (tz){ + GDateTime *datetime = g_date_time_new_now(tz); + char *time = g_date_time_format(datetime,"%H %M"); + char *format = yon_settings_configuration_get(date_format_parameter); + char *date = g_date_time_format(datetime,format?format:"%d.%m.%Y"); + gtk_calendar_select_month(GTK_CALENDAR(widgets->DateCalendar),g_date_time_get_month(datetime)-1,g_date_time_get_year(datetime)); + gtk_calendar_select_day(GTK_CALENDAR(widgets->DateCalendar),g_date_time_get_day_of_month(datetime)); + g_date_time_unref(datetime); + + if (!yon_char_is_empty(time)){ + char *hour = yon_char_divide_search(time," ",-1); + double hours = atof(hour); + double minutes = atof(time); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->HourSpin),hours); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->MinuteSpin),minutes); + free(hour); + free(time); + } else { + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->HourSpin),0.0f); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->MinuteSpin),0.0f); + } - if (!yon_char_is_empty(time)){ - char *hour = yon_char_divide_search(time," ",-1); - double hours = atof(hour); - double minutes = atof(time); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->HourSpin),hours); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->MinuteSpin),minutes); - free(hour); - free(time); - } else { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->HourSpin),0.0f); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->MinuteSpin),0.0f); - } + if (!yon_char_is_empty(date)){ + gtk_entry_set_text(GTK_ENTRY(widgets->DateEntry),date); + } else { + gtk_entry_set_text(GTK_ENTRY(widgets->DateEntry),""); + } - if (!yon_char_is_empty(date)){ - gtk_entry_set_text(GTK_ENTRY(widgets->DateEntry),date); - } else { - gtk_entry_set_text(GTK_ENTRY(widgets->DateEntry),""); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->NTPEntry),G_CALLBACK(yon_save_parameters),widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->DHCPCombo),G_CALLBACK(yon_save_parameters),widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->TimeSyncTypeCombo),G_CALLBACK(yon_save_parameters),widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionCombo),G_CALLBACK(yon_save_parameters),widgets); + g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(yon_save_parameters),widgets); + g_time_zone_unref(tz); } - - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->NTPEntry),G_CALLBACK(yon_save_parameters),widgets); - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->DHCPCombo),G_CALLBACK(yon_save_parameters),widgets); - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->TimeSyncTypeCombo),G_CALLBACK(yon_save_parameters),widgets); - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->RegionCombo),G_CALLBACK(yon_save_parameters),widgets); - g_signal_handlers_unblock_by_func(G_OBJECT(widgets->ZoneCombo),G_CALLBACK(yon_save_parameters),widgets); } void on_date_clicked(GtkWidget *,main_window *widgets){