Fixed crash at '-*' service name tooltip call

pull/71/head
parent 82787c4b1f
commit 0b209ba7b1

@ -1476,54 +1476,59 @@ gboolean on_tooltip_show(GtkWidget* self, gint x, gint y, gboolean keyboard_mode
if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tree), tree_x, tree_y, &path, NULL, NULL, NULL)) {
GtkTreeIter iter;
if (gtk_tree_model_get_iter(model, &iter, path)) {
gchar *name, *description, *state;
gchar *name, *description, *state, *name_target;
gint64 activa, deactiva;
int size;
gtk_tree_model_get(model, &iter, 5, &name, 6, &description, 11, &state, -1);
config_str target = yon_config_load(get_activate_deactivate_times(name), &size);
free(yon_char_divide_search(target[0], "=", -1));
yon_char_remove_last_symbol(target[0], '\n');
free(yon_char_divide_search(target[1], "=", -1));
yon_char_remove_last_symbol(target[1], '\n');
free(yon_char_divide_search(target[2], "=", -1));
yon_char_remove_last_symbol(target[2], '\n');
activa = g_ascii_strtoll(target[1], NULL, 10);
deactiva = g_ascii_strtoll(target[1], NULL, 10);
name_target = yon_char_new(name);
if (name[0]=='-'){
name_target = yon_char_append("-- ",name_target);
}
config_str target = yon_config_load(get_activate_deactivate_times(name_target), &size);
free(name_target);
if (target){
free(yon_char_divide_search(target[0], "=", -1));
yon_char_remove_last_symbol(target[0], '\n');
free(yon_char_divide_search(target[1], "=", -1));
yon_char_remove_last_symbol(target[1], '\n');
free(yon_char_divide_search(target[2], "=", -1));
yon_char_remove_last_symbol(target[2], '\n');
activa = g_ascii_strtoll(target[1], NULL, 10);
deactiva = g_ascii_strtoll(target[1], NULL, 10);
gtk_label_set_text(GTK_LABEL(widgets->UnitLabel), target[0]);
}
gtk_label_set_text(GTK_LABEL(widgets->NameLabel), name);
gtk_label_set_text(GTK_LABEL(widgets->DescriptionLabel), description);
gtk_label_set_text(GTK_LABEL(widgets->StatusQueryLabel), state);
gtk_label_set_text(GTK_LABEL(widgets->UnitLabel), target[0]);
free(name);
free(description);
free(state);
free(target[1]);
free(target[2]);
gchar *formatted_activa = NULL;
gchar *formatted_deactiva = NULL;
if (activa) {
GDateTime *datetime = g_date_time_new_from_unix_local(activa);
formatted_activa = g_date_time_format(datetime, "%d:%m:%Y %T");
g_date_time_unref(datetime);
} else {
formatted_activa = g_strdup(NULL_LABEL);
}
if (deactiva) {
GDateTime *datetime = g_date_time_new_from_unix_local(deactiva);
formatted_deactiva = g_date_time_format(datetime, "%d:%m:%Y %T");
g_date_time_unref(datetime);
} else {
formatted_deactiva = g_strdup(NULL_LABEL);
}
gtk_label_set_text(GTK_LABEL(widgets->ActivateLabel), formatted_activa);
gtk_label_set_text(GTK_LABEL(widgets->DeactivateLabel), formatted_deactiva);
if (target){
gchar *formatted_activa = NULL;
gchar *formatted_deactiva = NULL;
if (activa) {
GDateTime *datetime = g_date_time_new_from_unix_local(activa);
formatted_activa = g_date_time_format(datetime, "%d:%m:%Y %T");
g_date_time_unref(datetime);
} else {
formatted_activa = g_strdup(NULL_LABEL);
}
if (deactiva) {
GDateTime *datetime = g_date_time_new_from_unix_local(deactiva);
formatted_deactiva = g_date_time_format(datetime, "%d:%m:%Y %T");
g_date_time_unref(datetime);
} else {
formatted_deactiva = g_strdup(NULL_LABEL);
}
g_free(formatted_activa);
g_free(formatted_deactiva);
gtk_label_set_text(GTK_LABEL(widgets->ActivateLabel), formatted_activa);
gtk_label_set_text(GTK_LABEL(widgets->DeactivateLabel), formatted_deactiva);
g_free(formatted_activa);
g_free(formatted_deactiva);
}
gtk_tree_path_free(path);
return TRUE;
}

Loading…
Cancel
Save