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

pull/4/head
Igor Belitskiy 2 years ago
parent 71166106d1
commit 9853ebc748

@ -643,7 +643,6 @@ void tree_view_add(int index) {
main_config.disk = yon_remalloc(main_config.disk, (main_config.size_tree_view + 1) * sizeof(char**)); main_config.disk = yon_remalloc(main_config.disk, (main_config.size_tree_view + 1) * sizeof(char**));
yon_char_parsed_copy(&main_config.i_o_limit_write[main_config.size_tree_view], add_get_write_device()); yon_char_parsed_copy(&main_config.i_o_limit_write[main_config.size_tree_view], add_get_write_device());
philos_array_int_copy(&main_config.i_o_limit_write_size[main_config.size_tree_view], add_get_write_device_size_pow()); philos_array_int_copy(&main_config.i_o_limit_write_size[main_config.size_tree_view], add_get_write_device_size_pow());
yon_char_parsed_copy(&main_config.disk[main_config.size_tree_view], add_get_select_device());
main_config.type_quota_size = philos_int_append(main_config.type_quota_size, &main_config.size_tree_view, add_get_quota_object_size()); main_config.type_quota_size = philos_int_append(main_config.type_quota_size, &main_config.size_tree_view, add_get_quota_object_size());
main_config.size_tree_view--; main_config.size_tree_view--;
@ -701,7 +700,7 @@ char* format_io_limit_in_tree_view(config_str* disk, config_str* i_o_limit, int*
str = yon_char_unite(str, ", ", disk[index][index_to_n2], " ", i_o_limit[index][index_to_n2], NULL); str = yon_char_unite(str, ", ", disk[index][index_to_n2], " ", i_o_limit[index][index_to_n2], NULL);
} }
else if (strstr(disk[index][index_to_n2], "-")){ else if (strstr(disk[index][index_to_n2], "-")){
str = yon_char_unite(str, "-", NULL); str = yon_char_unite(str, ",", NULL);
} }
else { else {
str = yon_char_unite(str, disk[index][index_to_n2], " ", i_o_limit[index][index_to_n2], NULL); str = yon_char_unite(str, disk[index][index_to_n2], " ", i_o_limit[index][index_to_n2], NULL);

@ -43,7 +43,7 @@
#define CMD_GET_GROUP "cut -d: -f1 /etc/group" #define CMD_GET_GROUP "cut -d: -f1 /etc/group"
typedef char *string; typedef char *string;
string version_application = "1.2-38-g8643957"; string version_application = "1.2-39-g7116610";
static char *local; static char *local;

@ -54,14 +54,14 @@ add_window *add_setup_window(char* glade_path) {
} }
// flag_check_array = 0 READ // flag_check_array = 0 READ
// flag_check_array = 1 WRITE // flag_check_array = 1 WRITE
void update_device_to_entry(GtkWidget *combo_box, GtkWidget *check_button, GtkWidget *spin, int flag_check_array) { void update_device_to_entry(GtkWidget *combo_box, GtkWidget *combo_box_size, GtkWidget *check_button, GtkWidget *spin, int flag_check_array) {
int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(combo_box)); int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(combo_box));
char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddDevice)); char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddDevice));
disk = yon_char_divide_search(disk, " ", -1); disk = yon_char_divide_search(disk, " ", -1);
if (disk_id != -1) { if (disk_id != -1) {
int index_find = -1; int index_find = -1;
for (int index = 0; index < obj_add_config.size; index++) { for (int index = 0; index < obj_add_config.size; index++) {
char* disk_cfg = yon_char_new(obj_add_config.disk[index]); char* disk_cfg = obj_add_config.disk[index];
if (strstr(disk_cfg, disk) != NULL) { if (strstr(disk_cfg, disk) != NULL) {
index_find = index; index_find = index;
break; break;
@ -72,35 +72,43 @@ void update_device_to_entry(GtkWidget *combo_box, GtkWidget *check_button, GtkWi
if (strstr(obj_add_config.i_o_limit_read[index_find],"-")) { if (strstr(obj_add_config.i_o_limit_read[index_find],"-")) {
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0);
gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0);
} }
else { else {
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), atoll(obj_add_config.i_o_limit_read[index_find])); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), atoll(obj_add_config.i_o_limit_read[index_find]));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 1);
gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), obj_add_config.i_o_limit_read_size[index_find]);
} }
} }
else if (flag_check_array==1) { else if (flag_check_array==1) {
if (strstr(obj_add_config.i_o_limit_write[index_find],"-")) { if (strstr(obj_add_config.i_o_limit_write[index_find],"-")) {
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0);
gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0);
} }
else { else {
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), atoll(obj_add_config.i_o_limit_write[index_find])); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), atoll(obj_add_config.i_o_limit_write[index_find]));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 1);
gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), obj_add_config.i_o_limit_write_size[index_find]);
} }
} }
else { else {
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0);
gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0);
} }
} }
else { else {
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0);
gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0);
} }
} }
else { else {
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0);
gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0);
} }
} }
@ -108,8 +116,8 @@ void add_config_init() {
if (obj_add_config.size != 0) { if (obj_add_config.size != 0) {
philos_free_string_array(&obj_add_config.disk, obj_add_config.size); philos_free_string_array(&obj_add_config.disk, obj_add_config.size);
philos_free_string_array(&obj_add_config.i_o_limit_read, obj_add_config.size); philos_free_string_array(&obj_add_config.i_o_limit_read, obj_add_config.size);
philos_free_string_array(&obj_add_config.i_o_limit_write, obj_add_config.size);
philos_free_int_array(&obj_add_config.i_o_limit_read_size, obj_add_config.size); philos_free_int_array(&obj_add_config.i_o_limit_read_size, obj_add_config.size);
philos_free_string_array(&obj_add_config.i_o_limit_write, obj_add_config.size);
philos_free_int_array(&obj_add_config.i_o_limit_write_size, obj_add_config.size); philos_free_int_array(&obj_add_config.i_o_limit_write_size, obj_add_config.size);
} }
obj_add_config.disk = NULL; obj_add_config.disk = NULL;
@ -229,7 +237,7 @@ void add_disk_all(){
if (disk_id >= 0 && obj_add_config.size !=0) { if (disk_id >= 0 && obj_add_config.size !=0) {
int index_find = -1; int index_find = -1;
for (int index = 0; index < obj_add_config.size; index++) { for (int index = 0; index < obj_add_config.size; index++) {
char* disk_cfg = yon_char_new(obj_add_config.disk[index]); char* disk_cfg = obj_add_config.disk[index];
if (strstr(disk_cfg, disk) != NULL) { if (strstr(disk_cfg, disk) != NULL) {
index_find = index; index_find = index;
break; break;
@ -237,7 +245,6 @@ void add_disk_all(){
} }
if (index_find == -1) { if (index_find == -1) {
// Добавление // Добавление
puts("hhhhhhh1");
obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk);
obj_add_config.size--; obj_add_config.size--;
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) {
@ -270,7 +277,6 @@ void add_disk_all(){
else { else {
// Редактирование // Редактирование
//obj_add_config.disk[index_find] = yon_char_new(disk); //obj_add_config.disk[index_find] = yon_char_new(disk);
puts("hhhhhhh2");
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) {
obj_add_config.i_o_limit_read_size[index_find] =(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead)); obj_add_config.i_o_limit_read_size[index_find] =(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead));
obj_add_config.i_o_limit_read[index_find] = yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead))); obj_add_config.i_o_limit_read[index_find] = yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead)));
@ -291,11 +297,8 @@ void add_disk_all(){
} }
else { else {
if (bool_read == 1 || bool_write == 1) { if (bool_read == 1 || bool_write == 1) {
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead)) || obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk);
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { obj_add_config.size--;
obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk);
obj_add_config.size--;
}
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) {
obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead)));
obj_add_config.size--; obj_add_config.size--;
@ -336,8 +339,8 @@ void event_check_io_device() {
} }
void combo_box_device() { void combo_box_device() {
update_device_to_entry(add_widgets->cbtAddDevice, add_widgets->chbAddRead, add_widgets->spinAddRead, 0); update_device_to_entry(add_widgets->cbtAddDevice,add_widgets->cbtAddRead, add_widgets->chbAddRead, add_widgets->spinAddRead, 0);
update_device_to_entry(add_widgets->cbtAddDevice, add_widgets->chbAddWrite, add_widgets->spinAddWrite, 1); update_device_to_entry(add_widgets->cbtAddDevice,add_widgets->cbtAddWrite, add_widgets->chbAddWrite, add_widgets->spinAddWrite, 1);
} }
void add_event(add_window *widgets) { void add_event(add_window *widgets) {
@ -422,43 +425,28 @@ char* add_get_select_device_to_level_2() {
} }
char*** add_get_read_device() { char*** add_get_read_device() {
int index = 0; obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size, NULL);
if (!obj_add_config.i_o_limit_read) { obj_add_config.size--;
obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&index, "-");
obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&index, NULL);
}
return &obj_add_config.i_o_limit_read; return &obj_add_config.i_o_limit_read;
} }
int** add_get_read_device_size_pow() { int** add_get_read_device_size_pow() {
int index = 0; obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size, -2);
if (!obj_add_config.i_o_limit_read_size) { obj_add_config.size--;
obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&index, -1);
obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&index, -2);
}
return &obj_add_config.i_o_limit_read_size; return &obj_add_config.i_o_limit_read_size;
} }
char*** add_get_write_device() { char*** add_get_write_device() {
int index = 0; obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write, &obj_add_config.size, NULL);
if (!obj_add_config.i_o_limit_write) { obj_add_config.size--;
obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write, &index, "-");
obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write, &index, NULL);
}
return &obj_add_config.i_o_limit_write; return &obj_add_config.i_o_limit_write;
} }
int** add_get_write_device_size_pow() { int** add_get_write_device_size_pow() {
int index = 0; obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size, -2);
if (!obj_add_config.i_o_limit_write_size) { obj_add_config.size--;
obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&index, -1);
obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&index, -2);
}
return &obj_add_config.i_o_limit_write_size; return &obj_add_config.i_o_limit_write_size;
} }
char*** add_get_select_device() { char*** add_get_select_device() {
int index = 0; obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, NULL);
if (!obj_add_config.disk) { obj_add_config.size--;
obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&index, "-");
obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&index, NULL);
}
return &obj_add_config.disk; return &obj_add_config.disk;
} }

Loading…
Cancel
Save