diff options
author | unknown <kroki/tomash@moonlight.home> | 2007-01-31 21:16:48 +0300 |
---|---|---|
committer | unknown <kroki/tomash@moonlight.home> | 2007-01-31 21:16:48 +0300 |
commit | 6560c2aa040453084fbc841de1a842580767f30e (patch) | |
tree | 9006bd39b52fb50dc331dbb0e3085378893f7022 | |
parent | 59d9b52fc61883d4ace0d258c7dba4f2c856c832 (diff) | |
download | mariadb-git-6560c2aa040453084fbc841de1a842580767f30e.tar.gz |
Fix for memory leaks introduced with the push of patch for bug#22740.
Original patch did not have these leaks, they were introduced later
during manual applying of the patch.
sql/event_data_objects.cc:
Original patch was not aware of the requirement to delete lex.sphead
before doing anything else (bug#21856), and that was missed when the
patch was applied later.
sql/event_scheduler.cc:
The line was lost during manual patch applying.
-rw-r--r-- | sql/event_data_objects.cc | 15 | ||||
-rw-r--r-- | sql/event_scheduler.cc | 2 |
2 files changed, 12 insertions, 5 deletions
diff --git a/sql/event_data_objects.cc b/sql/event_data_objects.cc index 198f6518184..b1724a28820 100644 --- a/sql/event_data_objects.cc +++ b/sql/event_data_objects.cc @@ -1811,16 +1811,21 @@ Event_job_data::compile(THD *thd, MEM_ROOT *mem_root) DBUG_PRINT("error", ("error during compile or thd->is_fatal_error: %d", thd->is_fatal_error)); /* - Free lex associated resources - QQ: Do we really need all this stuff here? + The first thing we do after parse error is freeing sp_head to + ensure that we have restored original memroot. */ + if (lex.sphead) + { + /* Clean up after failed stored procedure/function */ + delete lex.sphead; + lex.sphead= NULL; + } + lex.unit.cleanup(); + sql_print_error("SCHEDULER: Error during compilation of %s.%s or " "thd->is_fatal_error: %d", dbname.str, name.str, thd->is_fatal_error); - lex.unit.cleanup(); - delete lex.sphead; - sphead= lex.sphead= NULL; ret= EVEX_COMPILE_ERROR; goto done; } diff --git a/sql/event_scheduler.cc b/sql/event_scheduler.cc index 1013f5af3a8..accf2ad03be 100644 --- a/sql/event_scheduler.cc +++ b/sql/event_scheduler.cc @@ -322,6 +322,8 @@ Event_worker_thread::run(THD *thd, Event_queue_element_for_exec *event) job_data->dbname.str, job_data->name.str, job_data->definer.str); else if (ret == EVEX_MICROSECOND_UNSUP) + sql_print_information("SCHEDULER: MICROSECOND is not supported"); + end: delete job_data; |