summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
Diffstat (limited to 'client')
-rw-r--r--client/mysql.cc8
-rw-r--r--client/mysqladmin.c3
-rw-r--r--client/mysqlimport.c6
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++)