mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 02:05:57 +01:00
Fixed memory leak in sql_parse.cc (lex_end() was not called)
This caused sp-vars.test to fail sql/item_func.h: Removed compiler warning sql/sp.cc: Fixed memory leak in sql_parse.cc sql/sp_head.cc: Fixed memory leak in sql_parse.cc sql/sp_head.h: Fixed memory leak in sql_parse.cc
This commit is contained in:
parent
a766cf91ab
commit
93db6d4aa2
4 changed files with 9 additions and 1 deletions
|
@ -284,6 +284,7 @@ class Item_func_connection_id :public Item_int_func
|
|||
longlong value;
|
||||
|
||||
public:
|
||||
Item_func_connection_id() {}
|
||||
const char *func_name() const { return "connection_id"; }
|
||||
void fix_length_and_dec();
|
||||
bool fix_fields(THD *thd, Item **ref);
|
||||
|
|
|
@ -269,7 +269,6 @@ db_find_routine_aux(THD *thd, int type, sp_name *name, TABLE *table)
|
|||
static int
|
||||
db_find_routine(THD *thd, int type, sp_name *name, sp_head **sphp)
|
||||
{
|
||||
extern int MYSQLparse(void *thd);
|
||||
TABLE *table;
|
||||
const char *params, *returns, *body;
|
||||
int ret;
|
||||
|
@ -478,6 +477,7 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp,
|
|||
(*sphp)->optimize();
|
||||
}
|
||||
end:
|
||||
lex_end(thd->lex);
|
||||
thd->spcont= old_spcont;
|
||||
thd->variables.sql_mode= old_sql_mode;
|
||||
thd->variables.select_limit= old_select_limit;
|
||||
|
|
|
@ -671,6 +671,7 @@ sp_head::destroy()
|
|||
DBUG_ASSERT(m_lex.is_empty() || m_thd);
|
||||
while ((lex= (LEX *)m_lex.pop()))
|
||||
{
|
||||
lex_end(m_thd->lex);
|
||||
delete m_thd->lex;
|
||||
m_thd->lex= lex;
|
||||
}
|
||||
|
@ -1643,7 +1644,10 @@ sp_head::restore_lex(THD *thd)
|
|||
*/
|
||||
merge_table_list(thd, sublex->query_tables, sublex);
|
||||
if (! sublex->sp_lex_in_use)
|
||||
{
|
||||
lex_end(sublex);
|
||||
delete sublex;
|
||||
}
|
||||
thd->lex= oldlex;
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
|
|
@ -520,7 +520,10 @@ public:
|
|||
virtual ~sp_lex_keeper()
|
||||
{
|
||||
if (m_lex_resp)
|
||||
{
|
||||
lex_end(m_lex);
|
||||
delete m_lex;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Reference in a new issue