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

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_write , 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);
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) {
char* disk = NULL;
if (strstr(str_find,"\"") != NULL) {
yon_char_divide(str_find, 0);
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--;
}
else if (strstr(str_find,"T") != NULL) {
puts(str_find);
*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_unite(str_find," ", STR_TB, NULL);
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_read_device(main_config.i_o_limit_read[index], main_config.i_o_limit_read_size[index]);
edit_event(get_widget_edit());
edit_init_windows();
edit_set_limit_swap(main_config.swap[index], main_config.swap_size[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);
@ -737,7 +743,7 @@ void tree_view_del_line() {
g_object_ref(main_config.list);
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), NULL);
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) {
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);
@ -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_fill_tree_view_after_remove();
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), model);
free(str_iter);
}
}
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_load = yon_dict_len(load_cfg);
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_load, load_cfg) {
@ -893,13 +900,13 @@ int check_save(dictionary* load_cfg) {
}
}
if (flag_check_key == 0 || flag_check_value == 0) {
return 1;
return 0;
}
}
return 0;
}
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);
if (cmd_set != NULL && 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);
char* cmd = yon_char_new(source_set_cmd);
main_config.save_cfg_gui = yon_dictionary_create_empty();
if (check_save(load_cfg)) {
return NULL;
}
int flag_save = 0;
for (size_t index = 0; index < main_config.size_tree_view; index++) {
char* key = NULL;
char* value = NULL;
key = save_format_key(index);
value = save_format_value(index);
key = yon_char_new(save_format_key(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));
if (key != NULL && value != NULL) {
if (check_save(load_cfg) == 1) {
cmd = yon_char_unite(cmd, " " , key, "=" , value, " ", NULL);
flag_save = 1;
}
cmd = yon_char_unite(cmd, " " , key, "=" , value, NULL);
flag_save = 1;
}
if (key != NULL) {
free(key);
}
if (value != NULL) {
else if (value != NULL) {
free(value);
}
}
if (flag_save) {
if (flag_save && check_save(load_cfg)== 0) {
return 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);
int flag_save = 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++) {
char* key = main_config.array_del_line[index];
if (key != NULL) {
puts(key);
cmd = yon_char_unite(cmd, " " , key, " ", NULL);
flag_save = 1;
free(key);
}
}
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;
}
free(cmd);

@ -209,6 +209,6 @@ void wrapper_system_save();
void wrapper_global_save();
void wrapper_all_save();
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* 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);
}
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 *new_int_parsed=NULL;
new_int_parsed=malloc(sizeof(int*)*((*size)-1));
new_int_parsed=malloc(sizeof(int)*((*size)-1));
int flag = 0;
for (int i=0;i < (*size);i++){
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));
}
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;

@ -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));
gtk_widget_set_sensitive(entry, active);
gtk_widget_set_sensitive(label, active);
if (active == 0) {
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0);
}
}
else {
gtk_widget_set_sensitive(entry, 0);
gtk_widget_set_sensitive(label, 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));
gtk_widget_set_sensitive(entry, 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) {

@ -38,7 +38,6 @@ edit_window *edit_setup_window(char* glade_path){
device_fill_disk(edit_widgets->cbtEditDevice);
// edit_event(edit_widgets);
edit_localization(edit_widgets);
edit_init_windows();
}
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));
gtk_widget_set_sensitive(entry, 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) {
@ -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));
gtk_widget_set_sensitive(entry, active);
gtk_widget_set_sensitive(label, active);
if (active == 0) {
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0);
}
}
else {
gtk_widget_set_sensitive(entry, 0);
gtk_widget_set_sensitive(label, 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* 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-Transfer-Encoding: 8bit\n"
msgid "Remove"
msgstr ""
msgid "User"
msgstr ""

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

Loading…
Cancel
Save