| 433 | |
| 434 | |
| 435 | static void clean_up(struct languages *lang_head, struct errors *error_head) |
| 436 | { |
| 437 | struct languages *tmp_lang, *next_language; |
| 438 | struct errors *tmp_error, *next_error; |
| 439 | uint count, i; |
| 440 | |
| 441 | my_free((void*) default_language); |
| 442 | |
| 443 | for (tmp_lang= lang_head; tmp_lang; tmp_lang= next_language) |
| 444 | { |
| 445 | next_language= tmp_lang->next_lang; |
| 446 | my_free(tmp_lang->lang_short_name); |
| 447 | my_free(tmp_lang->lang_long_name); |
| 448 | my_free(tmp_lang->charset); |
| 449 | my_free(tmp_lang); |
| 450 | } |
| 451 | |
| 452 | for (tmp_error= error_head; tmp_error; tmp_error= next_error) |
| 453 | { |
| 454 | next_error= tmp_error->next_error; |
| 455 | count= (tmp_error->msg).elements; |
| 456 | for (i= 0; i < count; i++) |
| 457 | { |
| 458 | struct message *tmp; |
| 459 | tmp= dynamic_element(&tmp_error->msg, i, struct message*); |
| 460 | my_free(tmp->lang_short_name); |
| 461 | my_free(tmp->text); |
| 462 | } |
| 463 | |
| 464 | delete_dynamic(&tmp_error->msg); |
| 465 | if (tmp_error->sql_code1[0]) |
| 466 | my_free((void*) tmp_error->sql_code1); |
| 467 | if (tmp_error->sql_code2[0]) |
| 468 | my_free((void*) tmp_error->sql_code2); |
| 469 | my_free((void*) tmp_error->er_name); |
| 470 | my_free(tmp_error); |
| 471 | } |
| 472 | } |
| 473 | |
| 474 | |
| 475 | static int parse_input_file(const char *file_name, struct errors **top_error, |
no test coverage detected