Исправлена утечка памяти при сохранение

pull/4/head
Igor Belitskiy 2 years ago
parent 78674ed79b
commit 95920b81a1

@ -277,6 +277,7 @@ void clear_array() {
philos_free_string_array(&main_config.i_o_limit_read , main_config.size_tree_view); philos_free_string_array(&main_config.i_o_limit_read , main_config.size_tree_view);
philos_free_string_array(&main_config.i_o_limit_write , main_config.size_tree_view); philos_free_string_array(&main_config.i_o_limit_write , main_config.size_tree_view);
philos_free_string_array(&main_config.disk, main_config.size_tree_view); philos_free_string_array(&main_config.disk, main_config.size_tree_view);
philos_free_string_array(&main_config.array_del_line, main_config.size_array_del_line); philos_free_string_array(&main_config.array_del_line, main_config.size_array_del_line);
main_config.size_array_del_line = 0; main_config.size_array_del_line = 0;
@ -425,6 +426,7 @@ void str_split_value(char* values, int index) {
void set_pow_size(char* str_find, int** array_size, char*** array_data , int index) { void set_pow_size(char* str_find, int** array_size, char*** array_data , int index) {
char* disk = NULL; char* disk = NULL;
if (strstr(str_find,"\"") != NULL) { if (strstr(str_find,"\"") != NULL) {
yon_char_divide(str_find, 0); yon_char_divide(str_find, 0);
size_t length = strlen(str_find); size_t length = strlen(str_find);
@ -456,8 +458,11 @@ void set_pow_size(char* str_find, int** array_size, char*** array_data , int ind
index--; index--;
} }
else if (strstr(str_find,"T") != NULL) { else if (strstr(str_find,"T") != NULL) {
puts(str_find);
*array_size = philos_int_append(*array_size, &index, 3); *array_size = philos_int_append(*array_size, &index, 3);
printf("%d\n\n", (*array_size)[index-1]);
str_find = yon_char_divide(str_find, length-1); str_find = yon_char_divide(str_find, length-1);
str_find = yon_char_unite(str_find," ", STR_TB, NULL); str_find = yon_char_unite(str_find," ", STR_TB, NULL);
index--; index--;
} }
@ -710,6 +715,7 @@ void wrapper_edit_show() {
edit_set_write_device(main_config.i_o_limit_write[index], main_config.i_o_limit_write_size[index]); edit_set_write_device(main_config.i_o_limit_write[index], main_config.i_o_limit_write_size[index]);
edit_set_read_device(main_config.i_o_limit_read[index], main_config.i_o_limit_read_size[index]); edit_set_read_device(main_config.i_o_limit_read[index], main_config.i_o_limit_read_size[index]);
edit_event(get_widget_edit()); edit_event(get_widget_edit());
edit_init_windows();
edit_set_limit_swap(main_config.swap[index], main_config.swap_size[index]); edit_set_limit_swap(main_config.swap[index], main_config.swap_size[index]);
// edit_set_select_device(main_config.cpu_limit[index]); // edit_set_select_device(main_config.cpu_limit[index]);
g_signal_connect(G_OBJECT(get_widget_edit()->btnSaveEditSave), "clicked", G_CALLBACK(main_edit_btn_save), NULL); g_signal_connect(G_OBJECT(get_widget_edit()->btnSaveEditSave), "clicked", G_CALLBACK(main_edit_btn_save), NULL);
@ -737,7 +743,7 @@ void tree_view_del_line() {
g_object_ref(main_config.list); g_object_ref(main_config.list);
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), NULL); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), NULL);
gtk_list_store_clear(main_config.list); gtk_list_store_clear(main_config.list);
char* key_del = save_format_key(main_config.size_tree_view-1); char* key_del = save_format_key(index);
if (key_del != NULL) { if (key_del != NULL) {
main_config.array_del_line = yon_char_parsed_append(main_config.array_del_line, &main_config.size_array_del_line, yon_char_new(key_del)); main_config.array_del_line = yon_char_parsed_append(main_config.array_del_line, &main_config.size_array_del_line, yon_char_new(key_del));
free(key_del); free(key_del);
@ -776,6 +782,7 @@ void tree_view_del_line() {
main_config.i_o_limit_write_size = remove_element_int_array(main_config.i_o_limit_write_size, &main_config.size_tree_view,index); main_config.i_o_limit_write_size = remove_element_int_array(main_config.i_o_limit_write_size, &main_config.size_tree_view,index);
main_fill_tree_view_after_remove(); main_fill_tree_view_after_remove();
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), model); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), model);
free(str_iter);
} }
} }
void wrapper_all_save() { void wrapper_all_save() {
@ -873,7 +880,7 @@ int check_save(dictionary* load_cfg) {
size_t size_cfg_gui = yon_dict_len(main_config.save_cfg_gui); size_t size_cfg_gui = yon_dict_len(main_config.save_cfg_gui);
size_t size_cfg_load = yon_dict_len(load_cfg); size_t size_cfg_load = yon_dict_len(load_cfg);
if (size_cfg_gui!=size_cfg_load) { if (size_cfg_gui!=size_cfg_load) {
return 1; return 0;
} }
for_dictionaries(ptr_dict_gui, main_config.save_cfg_gui) { for_dictionaries(ptr_dict_gui, main_config.save_cfg_gui) {
for_dictionaries(ptr_dict_load, load_cfg) { for_dictionaries(ptr_dict_load, load_cfg) {
@ -893,13 +900,13 @@ int check_save(dictionary* load_cfg) {
} }
} }
if (flag_check_key == 0 || flag_check_value == 0) { if (flag_check_key == 0 || flag_check_value == 0) {
return 1; return 0;
} }
} }
return 0; return 0;
} }
int template_format_str_save(dictionary* load_cfg, char* source_set_cmd, char* source_remove_cmd) { int template_format_str_save(dictionary* load_cfg, char* source_set_cmd, char* source_remove_cmd) {
char* cmd_remove = template_format_str_remove_save(source_remove_cmd); char* cmd_remove = template_format_str_remove_save(load_cfg, source_remove_cmd);
char* cmd_set = template_format_str_set_save(load_cfg, source_set_cmd); char* cmd_set = template_format_str_set_save(load_cfg, source_set_cmd);
if (cmd_set != NULL && cmd_remove != NULL) { if (cmd_set != NULL && cmd_remove != NULL) {
yon_config_save(yon_char_unite(cmd_set, "; " , cmd_remove, NULL)); yon_config_save(yon_char_unite(cmd_set, "; " , cmd_remove, NULL));
@ -926,30 +933,26 @@ char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd) {
yon_dictionary_free_all(main_config.save_cfg_gui, NULL); yon_dictionary_free_all(main_config.save_cfg_gui, NULL);
char* cmd = yon_char_new(source_set_cmd); char* cmd = yon_char_new(source_set_cmd);
main_config.save_cfg_gui = yon_dictionary_create_empty(); main_config.save_cfg_gui = yon_dictionary_create_empty();
if (check_save(load_cfg)) {
return NULL;
}
int flag_save = 0; int flag_save = 0;
for (size_t index = 0; index < main_config.size_tree_view; index++) { for (size_t index = 0; index < main_config.size_tree_view; index++) {
char* key = NULL; char* key = NULL;
char* value = NULL; char* value = NULL;
key = save_format_key(index); key = yon_char_new(save_format_key(index));
value = save_format_value(index); value = yon_char_new(save_format_value(index));
main_config.save_cfg_gui = yon_dictionary_create_with_data_connected(main_config.save_cfg_gui, key, yon_char_new(value)); main_config.save_cfg_gui = yon_dictionary_create_with_data_connected(main_config.save_cfg_gui, key, yon_char_new(value));
if (key != NULL && value != NULL) { if (key != NULL && value != NULL) {
if (check_save(load_cfg) == 1) { cmd = yon_char_unite(cmd, " " , key, "=" , value, NULL);
cmd = yon_char_unite(cmd, " " , key, "=" , value, " ", NULL); flag_save = 1;
flag_save = 1;
}
} }
if (key != NULL) { if (key != NULL) {
free(key); free(key);
} }
if (value != NULL) { else if (value != NULL) {
free(value); free(value);
} }
} }
if (flag_save) {
if (flag_save && check_save(load_cfg)== 0) {
return cmd; return cmd;
} }
free(cmd); free(cmd);
@ -957,7 +960,7 @@ char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd) {
} }
char* template_format_str_remove_save(char* source_remove_cmd) { char* template_format_str_remove_save(dictionary* load_cfg, char* source_remove_cmd) {
char* cmd = yon_char_new(source_remove_cmd); char* cmd = yon_char_new(source_remove_cmd);
int flag_save = 0; int flag_save = 0;
if (main_config.size_array_del_line == 0) { if (main_config.size_array_del_line == 0) {
@ -966,13 +969,13 @@ char* template_format_str_remove_save(char* source_remove_cmd) {
for (size_t index = 0; index < main_config.size_array_del_line; index++) { for (size_t index = 0; index < main_config.size_array_del_line; index++) {
char* key = main_config.array_del_line[index]; char* key = main_config.array_del_line[index];
if (key != NULL) { if (key != NULL) {
puts(key);
cmd = yon_char_unite(cmd, " " , key, " ", NULL); cmd = yon_char_unite(cmd, " " , key, " ", NULL);
flag_save = 1; flag_save = 1;
free(key);
} }
} }
if (flag_save) { if (flag_save) {
philos_free_string_array(&main_config.array_del_line, main_config.size_array_del_line);
main_config.size_array_del_line = 0;
return cmd; return cmd;
} }
free(cmd); free(cmd);

@ -209,6 +209,6 @@ void wrapper_system_save();
void wrapper_global_save(); void wrapper_global_save();
void wrapper_all_save(); void wrapper_all_save();
int template_format_str_save(dictionary *load_cfg, char *source_cmd, char* source_remove_cmd); int template_format_str_save(dictionary *load_cfg, char *source_cmd, char* source_remove_cmd);
char* template_format_str_remove_save(char* source_remove_cmd); char* template_format_str_remove_save(dictionary* load_cfg, char* source_remove_cmd);
char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd); char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd);
char* save_format_key(int index); char* save_format_key(int index);

@ -631,7 +631,7 @@ char* philos_format_cfg_str_size_memory(char* str_key, char* str_source_value, i
return yon_char_unite(str_key, "=" , str_value, "%" ,NULL); return yon_char_unite(str_key, "=" , str_value, "%" ,NULL);
} }
else { else {
return yon_char_unite(str_key, "=" , str_value, "error" ,NULL); return yon_char_unite(str_key, "=" , str_value, "-" ,NULL);
} }
} }
@ -1045,7 +1045,7 @@ int* philos_int_append(int* array, int* size, int value) {
int* remove_element_int_array(int* array, int* size, int item_to_delete) { int* remove_element_int_array(int* array, int* size, int item_to_delete) {
int *new_int_parsed=NULL; int *new_int_parsed=NULL;
new_int_parsed=malloc(sizeof(int*)*((*size)-1)); new_int_parsed=malloc(sizeof(int)*((*size)-1));
int flag = 0; int flag = 0;
for (int i=0;i < (*size);i++){ for (int i=0;i < (*size);i++){
if (i==item_to_delete) { if (i==item_to_delete) {
@ -1055,7 +1055,7 @@ int* remove_element_int_array(int* array, int* size, int item_to_delete) {
memcpy(&(new_int_parsed[i]),&(array[i]),sizeof(int)); memcpy(&(new_int_parsed[i]),&(array[i]),sizeof(int));
} }
else if (flag == 1 && i!=item_to_delete) { else if (flag == 1 && i!=item_to_delete) {
memcpy(&(new_int_parsed[i]),&(array[i-1]),sizeof(int)); memcpy(&(new_int_parsed[i-1]),&(array[i]),sizeof(int));
} }
} }
(*size)=(*size)-1; (*size)=(*size)-1;

@ -108,11 +108,15 @@ void add_set_active_widgets_device_io(GtkWidget *self, GtkWidget *entry, GtkWidg
gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self));
gtk_widget_set_sensitive(entry, active); gtk_widget_set_sensitive(entry, active);
gtk_widget_set_sensitive(label, active); gtk_widget_set_sensitive(label, active);
if (active == 0) {
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0);
}
} }
else { else {
gtk_widget_set_sensitive(entry, 0); gtk_widget_set_sensitive(entry, 0);
gtk_widget_set_sensitive(label, 0); gtk_widget_set_sensitive(label, 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self), 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self), 0);
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0);
} }
} }
@ -120,6 +124,9 @@ void add_set_active_widgets(GtkWidget *self, GtkWidget *entry, GtkWidget *label)
gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self));
gtk_widget_set_sensitive(entry, active); gtk_widget_set_sensitive(entry, active);
gtk_widget_set_sensitive(label, active); gtk_widget_set_sensitive(label, active);
if (active == 0) {
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0);
}
} }
void add_localization(add_window *widgets) { void add_localization(add_window *widgets) {

@ -38,7 +38,6 @@ edit_window *edit_setup_window(char* glade_path){
device_fill_disk(edit_widgets->cbtEditDevice); device_fill_disk(edit_widgets->cbtEditDevice);
// edit_event(edit_widgets); // edit_event(edit_widgets);
edit_localization(edit_widgets); edit_localization(edit_widgets);
edit_init_windows();
} }
return edit_widgets; return edit_widgets;
} }
@ -109,6 +108,9 @@ void edit_set_active_widgets(GtkWidget *self, GtkWidget *entry, GtkWidget *label
gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self));
gtk_widget_set_sensitive(entry, active); gtk_widget_set_sensitive(entry, active);
gtk_widget_set_sensitive(label, active); gtk_widget_set_sensitive(label, active);
if (active == 0) {
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0);
}
} }
void edit_set_active_widgets_device_io(GtkWidget *self, GtkWidget *entry, GtkWidget *label) { void edit_set_active_widgets_device_io(GtkWidget *self, GtkWidget *entry, GtkWidget *label) {
@ -117,13 +119,18 @@ void edit_set_active_widgets_device_io(GtkWidget *self, GtkWidget *entry, GtkWid
gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self));
gtk_widget_set_sensitive(entry, active); gtk_widget_set_sensitive(entry, active);
gtk_widget_set_sensitive(label, active); gtk_widget_set_sensitive(label, active);
if (active == 0) {
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0);
}
} }
else { else {
gtk_widget_set_sensitive(entry, 0); gtk_widget_set_sensitive(entry, 0);
gtk_widget_set_sensitive(label, 0); gtk_widget_set_sensitive(label, 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self), 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self), 0);
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0);
} }
} }
char* edit_get_select_device() { char* edit_get_select_device() {
char* text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(edit_widgets->cbtEditDevice)); char* text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(edit_widgets->cbtEditDevice));

@ -17,6 +17,9 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
msgid "Remove"
msgstr ""
msgid "User" msgid "User"
msgstr "" msgstr ""

@ -250,6 +250,9 @@ msgstr "Сохранить глобальную конфигурацию"
msgid "Global configuration write error" msgid "Global configuration write error"
msgstr "Сохранить глобальную конфигурацию" msgstr "Сохранить глобальную конфигурацию"
msgid "Remove"
msgstr "Удалить"
msgid "Nothing to save!" msgid "Nothing to save!"
msgstr "Нечего сохранять!" msgstr "Нечего сохранять!"

Loading…
Cancel
Save