Исправил утечку памяти при загрузке устройств

pull/4/head
Igor Belitskiy 2 years ago
parent 9ded4af3be
commit d2377257f3

@ -351,6 +351,32 @@ void init_cfg_array(int index) {
philos_set_pow_size_memory("-", &main_config.swap_size, index, array_size_pow); philos_set_pow_size_memory("-", &main_config.swap_size, index, array_size_pow);
set_size_memory_integer("-",&main_config.swap , index); set_size_memory_integer("-",&main_config.swap , index);
int* array_limit = NULL;
char** array_disk = NULL;
int index_n2 = 0;
array_limit = philos_int_append(array_limit, &index_n2, -3);
index_n2--;
array_disk = yon_char_parsed_append(array_disk, &index_n2, "-");
array_limit = philos_int_append(array_limit, &index_n2, -2);
index_n2--;
array_disk = yon_char_parsed_append(array_disk, &index_n2, NULL);
main_config.i_o_limit_read = yon_remalloc(main_config.i_o_limit_read, (index + 1) * sizeof(int*));
main_config.i_o_limit_read_size = yon_remalloc(main_config.i_o_limit_read_size, (index + 1) * sizeof(int*));
main_config.disk = yon_remalloc(main_config.disk, (index + 1) * sizeof(char**));
main_config.i_o_limit_write = yon_remalloc(main_config.i_o_limit_write, (index + 1) * sizeof(int*));
main_config.i_o_limit_write_size = yon_remalloc(main_config.i_o_limit_write_size, (index + 1) * sizeof(int*));
main_config.disk = yon_remalloc(main_config.disk, (index + 1) * sizeof(char**));
philos_array_int_copy(&main_config.i_o_limit_read[index], &array_limit);
philos_array_int_copy(&main_config.i_o_limit_read_size[index], &array_limit);
yon_char_parsed_copy(&main_config.disk[index], &array_disk);
philos_array_int_copy(&main_config.i_o_limit_write[main_config.size_tree_view], &array_limit);
philos_array_int_copy(&main_config.i_o_limit_write_size[main_config.size_tree_view], &array_limit);
yon_char_parsed_copy(&main_config.disk[main_config.size_tree_view], &array_disk);
philos_free_int_array(&array_limit, 1);
philos_free_string_array(&array_disk, 1);
} }
void str_split_key(char* source_value, int index) { void str_split_key(char* source_value, int index) {
@ -426,41 +452,9 @@ void str_split_value(char* values, int index) {
if (yon_char_find_count(key, "IOReadBandwidthMax") != 0) { if (yon_char_find_count(key, "IOReadBandwidthMax") != 0) {
get_param_io_limit(arr_values, index_1, size,index, "IOReadBandwidthMax"); get_param_io_limit(arr_values, index_1, size,index, "IOReadBandwidthMax");
} }
else {
int* array_limit = NULL;
char** array_disk = NULL;
int index11 = 0;
array_limit = philos_int_append(array_limit, &index11, -2);
index11--;
array_disk = yon_char_parsed_append(array_disk, &index11, NULL);
main_config.i_o_limit_read = yon_remalloc(main_config.i_o_limit_read, (main_config.size_tree_view + 1) * sizeof(int*));
main_config.i_o_limit_read_size = yon_remalloc(main_config.i_o_limit_read_size, (main_config.size_tree_view + 1) * sizeof(int*));
main_config.disk = yon_remalloc(main_config.disk, (main_config.size_tree_view + 1) * sizeof(char**));
philos_array_int_copy(&main_config.i_o_limit_read[main_config.size_tree_view], &array_limit);
philos_array_int_copy(&main_config.i_o_limit_read_size[main_config.size_tree_view], &array_limit);
yon_char_parsed_copy(&main_config.disk[main_config.size_tree_view], &array_disk);
philos_free_int_array(&array_limit, 1);
philos_free_string_array(&array_disk, 1);
}
if (yon_char_find_count(key, "IOWriteBandwidthMax") != 0) { if (yon_char_find_count(key, "IOWriteBandwidthMax") != 0) {
get_param_io_limit(arr_values, index_1, size,index, "IOWriteBandwidthMax"); get_param_io_limit(arr_values, index_1, size,index, "IOWriteBandwidthMax");
} }
else {
int* array_limit = NULL;
char** array_disk = NULL;
int index11 = 0;
array_limit = philos_int_append(array_limit, &index11, -2);
index11--;
array_disk = yon_char_parsed_append(array_disk, &index11, NULL);
main_config.i_o_limit_write = yon_remalloc(main_config.i_o_limit_write, (main_config.size_tree_view + 1) * sizeof(int*));
main_config.i_o_limit_write_size = yon_remalloc(main_config.i_o_limit_write_size, (main_config.size_tree_view + 1) * sizeof(int*));
main_config.disk = yon_remalloc(main_config.disk, (main_config.size_tree_view + 1) * sizeof(char**));
philos_array_int_copy(&main_config.i_o_limit_write[main_config.size_tree_view], &array_limit);
philos_array_int_copy(&main_config.i_o_limit_write_size[main_config.size_tree_view], &array_limit);
yon_char_parsed_copy(&main_config.disk[main_config.size_tree_view], &array_disk);
philos_free_int_array(&array_limit, 1);
philos_free_string_array(&array_disk, 1);
}
if (yon_char_find_count(key, "MemoryHigh") != 0) { if (yon_char_find_count(key, "MemoryHigh") != 0) {
philos_set_pow_size_memory(yon_char_new(value), &main_config.soft_raw_limit_size, index, array_size_pow); philos_set_pow_size_memory(yon_char_new(value), &main_config.soft_raw_limit_size, index, array_size_pow);
set_size_memory_integer(yon_char_new(value), &main_config.soft_raw_limit, index); set_size_memory_integer(yon_char_new(value), &main_config.soft_raw_limit, index);
@ -506,7 +500,6 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_
strstr(arr_values[i], key_find)==NULL && flag_parsed == 1) { strstr(arr_values[i], key_find)==NULL && flag_parsed == 1) {
// Найден ключ в массив, но не тот // Найден ключ в массив, но не тот
flag_exit = 1; flag_exit = 1;
} }
free(value); free(value);
} }
@ -697,7 +690,7 @@ char* format_io_limit_in_tree_view(config_str* disk, int** i_o_limit, int** i_o_
} }
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 {
if (!strstr(str, "-")) { if (!strstr(str, "-")) {

Loading…
Cancel
Save