summaryrefslogtreecommitdiff
path: root/sql/sql_trigger.cc
diff options
context:
space:
mode:
authorunknown <dlenev@brandersnatch.localdomain>2005-03-05 16:31:58 +0300
committerunknown <dlenev@brandersnatch.localdomain>2005-03-05 16:31:58 +0300
commite3bc9d82e6c58aea14aa1106adc6c609a5026b89 (patch)
treec5edb86c94bf138a7049952573b7f5752324da7a /sql/sql_trigger.cc
parentf76b64f540fe7ee2505f14d8cd0c19aac0cead44 (diff)
downloadmariadb-git-e3bc9d82e6c58aea14aa1106adc6c609a5026b89.tar.gz
Fix for yet another memleak caused by SP-locking patch.
Improved handling of situations when we encounter error during CREATE PROCEDURE (FUNCTION/TRIGGER/...) and bail out of yyparse() without restoring proper THD::lex. sql/sp.cc: We do not need to call sp_head::restore_lex() explicitly to restore right value of THD::lex in case when we have encountered error during parsing. Now we do this in sp_head::~sp_head() instead. sql/sp_head.cc: sp_head::destroy(): Fixed cleaning up of stack of auxilary LEXes. We also restore right value of THD::lex during this process now. sql/sql_parse.cc: We do not need to call sp_head::restore_lex() explicitly to restore right value of THD::lex in case when we have encountered error during parsing. Now we do this in sp_head::~sp_head() instead. sql/sql_prepare.cc: We do not need to call sp_head::restore_lex() explicitly to restore right value of THD::lex in case when we have encountered error during parsing. Now we do this in sp_head::~sp_head() instead. sql/sql_trigger.cc: We do not need to call sp_head::restore_lex() explicitly to restore right value of THD::lex in case when we have encountered error during parsing. Now we do this in sp_head::~sp_head() instead.
Diffstat (limited to 'sql/sql_trigger.cc')
-rw-r--r--sql/sql_trigger.cc3
1 files changed, 1 insertions, 2 deletions
diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc
index f61ff12f365..110841e8fd4 100644
--- a/sql/sql_trigger.cc
+++ b/sql/sql_trigger.cc
@@ -415,9 +415,8 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db,
*/
if (lex.sphead)
{
- if (&lex != thd->lex)
- thd->lex->sphead->restore_lex(thd);
delete lex.sphead;
+ lex.sphead= 0;
}
goto err_with_lex_cleanup;
}