Bug#14685362 : MEMORY LEAKS IN MYSQL CLIENT IN
INTERACTIVE MODE In interactive mode, libedit/readline allocates memory for every new line entered & later the allocated memory never gets freed. Fixed by freeing the allocated memory blocks appropriately.
This commit is contained in:
parent
bf064c5b1d
commit
78eb581829
@ -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
|
||||
@ -1869,7 +1869,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;
|
||||
@ -1944,6 +1944,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__) || defined(__NETWARE__) */
|
||||
|
||||
@ -2003,8 +2010,17 @@ static int read_and_execute(bool interactive)
|
||||
#endif
|
||||
#if defined(__WIN__)
|
||||
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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user