summaryrefslogtreecommitdiff
path: root/client/mysql.cc
diff options
context:
space:
mode:
Diffstat (limited to 'client/mysql.cc')
-rw-r--r--client/mysql.cc8
1 files changed, 7 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);
}