mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Fix for memory leak which was introduced by patch improving locking in SP.
Made mysql_make_view() to call destructor for st_lex_local objects before throwing them away (this happens in case of error). sql/sql_lex.h: Made LEX's destructor virtual to be able properly destroy objects of inherited classes (i.e. of st_lex_local). sql/sql_view.cc: mysql_make_view(): We should call destructor for st_lex_local object before throwing it away.
This commit is contained in:
@ -816,8 +816,8 @@ typedef struct st_lex
|
|||||||
hash_init(&spfuns, system_charset_info, 0, 0, 0, sp_lex_sp_key, 0, 0);
|
hash_init(&spfuns, system_charset_info, 0, 0, 0, sp_lex_sp_key, 0, 0);
|
||||||
hash_init(&spprocs, system_charset_info, 0, 0, 0, sp_lex_sp_key, 0, 0);
|
hash_init(&spprocs, system_charset_info, 0, 0, 0, sp_lex_sp_key, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
~st_lex()
|
virtual ~st_lex()
|
||||||
{
|
{
|
||||||
hash_free(&spfuns);
|
hash_free(&spfuns);
|
||||||
hash_free(&spprocs);
|
hash_free(&spprocs);
|
||||||
|
@ -854,6 +854,7 @@ ok2:
|
|||||||
err:
|
err:
|
||||||
if (arena)
|
if (arena)
|
||||||
thd->restore_backup_item_arena(arena, &backup);
|
thd->restore_backup_item_arena(arena, &backup);
|
||||||
|
delete table->view;
|
||||||
table->view= 0; // now it is not VIEW placeholder
|
table->view= 0; // now it is not VIEW placeholder
|
||||||
thd->lex= old_lex;
|
thd->lex= old_lex;
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
|
Reference in New Issue
Block a user