diff options
Diffstat (limited to 'client')
-rw-r--r-- | client/mysql.cc | 8 | ||||
-rw-r--r-- | client/mysqladmin.c | 3 | ||||
-rw-r--r-- | client/mysqlimport.c | 6 |
3 files changed, 16 insertions, 1 deletions
diff --git a/client/mysql.cc b/client/mysql.cc index 77823b1087f..66df47bc934 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -112,6 +112,7 @@ typedef struct st_status static HashTable ht; +static char **defaults_argv; enum enum_info_type { INFO_INFO,INFO_ERROR,INFO_RESULT}; typedef enum enum_info_type INFO_TYPE; @@ -317,15 +318,19 @@ int main(int argc,char *argv[]) status.add_to_history=1; status.exit_status=1; load_defaults("my",load_default_groups,&argc,&argv); + defaults_argv=argv; if (get_options(argc, (char **) argv)) { + free_defaults(defaults_argv); my_end(0); exit(1); } - free_defaults(argv); if (status.batch && !status.line_buff && !(status.line_buff=batch_readline_init(max_allowed_packet+512,stdin))) + { + free_defaults(defaults_argv); exit(1); + } glob_buffer.realloc(512); mysql_server_init(0, NULL, (char**) server_default_groups); completion_hash_init(&ht, 128); @@ -420,6 +425,7 @@ sig_handler mysql_end(int sig) my_free(default_prompt,MYF(MY_ALLOW_ZERO_PTR)); my_free(current_prompt,MYF(MY_ALLOW_ZERO_PTR)); mysql_server_end(); + free_defaults(defaults_argv); my_end(info_flag ? MY_CHECK_ERROR | MY_GIVE_INFO : 0); exit(status.exit_status); } diff --git a/client/mysqladmin.c b/client/mysqladmin.c index 4da995fa224..cdca59574f7 100644 --- a/client/mysqladmin.c +++ b/client/mysqladmin.c @@ -254,7 +254,10 @@ int main(int argc,char *argv[]) load_defaults("my",load_default_groups,&argc,&argv); save_argv = argv; /* Save for free_defaults */ if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option))) + { + free_defaults(save_argv); exit(ho_error); + } if (argc == 0) { diff --git a/client/mysqlimport.c b/client/mysqlimport.c index e7af106abbb..603e9036106 100644 --- a/client/mysqlimport.c +++ b/client/mysqlimport.c @@ -471,9 +471,15 @@ int main(int argc, char **argv) /* argv is changed in the program */ argv_to_free= argv; if (get_options(&argc, &argv)) + { + free_defaults(argv_to_free); return(1); + } if (!(sock= db_connect(current_host,current_db,current_user,opt_password))) + { + free_defaults(argv_to_free); return(1); /* purecov: deadcode */ + } if (lock_tables) lock_table(sock, argc, argv); for (; *argv != NULL; argv++) |