diff --git a/client/mysql.cc b/client/mysql.cc index edbfd532de3..5deb978a593 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -1,5 +1,5 @@ /* - Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -1849,7 +1849,7 @@ static int read_and_execute(bool interactive) String buffer; #endif - char *line; + char *line= NULL; char in_string=0; ulong line_number=0; bool ml_comment= 0; @@ -1913,6 +1913,13 @@ static int read_and_execute(bool interactive) #else if (opt_outfile) fputs(prompt, OUTFILE); + /* + free the previous entered line. + Note: my_free() cannot be used here as the memory was allocated under + the readline/libedit library. + */ + if (line) + free(line); line= readline(prompt); #endif /* defined(__WIN__) */ @@ -1970,8 +1977,17 @@ static int read_and_execute(bool interactive) #if defined(__WIN__) buffer.free(); tmpbuf.free(); +#else + if (interactive) + /* + free the last entered line. + Note: my_free() cannot be used here as the memory was allocated under + the readline/libedit library. + */ + free(line); #endif + return status.exit_status; } diff --git a/sql-common/client.c b/sql-common/client.c index ef1e3c1b7d4..7e369e74eb8 100644 --- a/sql-common/client.c +++ b/sql-common/client.c @@ -2215,6 +2215,8 @@ mysql_autodetect_character_set(MYSQL *mysql) } #endif + if (mysql->options.charset_name) + my_free(mysql->options.charset_name); if (!(mysql->options.charset_name= my_strdup(csname, MYF(MY_WME)))) return 1; return 0;