Fixed crash at '-*' service name tooltip call

pull/71/head
parent 82787c4b1f
commit 0b209ba7b1

@ -1476,11 +1476,17 @@ 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)) { if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tree), tree_x, tree_y, &path, NULL, NULL, NULL)) {
GtkTreeIter iter; GtkTreeIter iter;
if (gtk_tree_model_get_iter(model, &iter, path)) { if (gtk_tree_model_get_iter(model, &iter, path)) {
gchar *name, *description, *state; gchar *name, *description, *state, *name_target;
gint64 activa, deactiva; gint64 activa, deactiva;
int size; int size;
gtk_tree_model_get(model, &iter, 5, &name, 6, &description, 11, &state, -1); 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); 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)); free(yon_char_divide_search(target[0], "=", -1));
yon_char_remove_last_symbol(target[0], '\n'); yon_char_remove_last_symbol(target[0], '\n');
free(yon_char_divide_search(target[1], "=", -1)); free(yon_char_divide_search(target[1], "=", -1));
@ -1489,18 +1495,17 @@ gboolean on_tooltip_show(GtkWidget* self, gint x, gint y, gboolean keyboard_mode
yon_char_remove_last_symbol(target[2], '\n'); yon_char_remove_last_symbol(target[2], '\n');
activa = g_ascii_strtoll(target[1], NULL, 10); activa = g_ascii_strtoll(target[1], NULL, 10);
deactiva = 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->NameLabel), name);
gtk_label_set_text(GTK_LABEL(widgets->DescriptionLabel), description); 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->StatusQueryLabel), state);
gtk_label_set_text(GTK_LABEL(widgets->UnitLabel), target[0]);
free(name); free(name);
free(description); free(description);
free(state); free(state);
free(target[1]);
free(target[2]);
if (target){
gchar *formatted_activa = NULL; gchar *formatted_activa = NULL;
gchar *formatted_deactiva = NULL; gchar *formatted_deactiva = NULL;
if (activa) { if (activa) {
@ -1523,7 +1528,7 @@ gboolean on_tooltip_show(GtkWidget* self, gint x, gint y, gboolean keyboard_mode
g_free(formatted_activa); g_free(formatted_activa);
g_free(formatted_deactiva); g_free(formatted_deactiva);
}
gtk_tree_path_free(path); gtk_tree_path_free(path);
return TRUE; return TRUE;
} }

Loading…
Cancel
Save