From cb28cf8d88bf2a0e99fc37059d05c97dd1a904ec Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jun 2006 14:31:22 +0200 Subject: [PATCH] Fix a Valgrind leak error report for not freed binlog injector singleton. sql/mysqld.cc: Free the binlog injector singleton during shutdown. sql/rpl_injector.cc: Add free_instance() method. sql/rpl_injector.h: Add free_instance() method. --- sql/mysqld.cc | 7 +++++++ sql/rpl_injector.cc | 10 ++++++++++ sql/rpl_injector.h | 5 +++++ 3 files changed, 22 insertions(+) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index ad6f7401965..87f3cd04605 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -28,6 +28,10 @@ #include "ha_myisam.h" +#ifdef HAVE_ROW_BASED_REPLICATION +#include "rpl_injector.h" +#endif + #ifdef WITH_INNOBASE_STORAGE_ENGINE #define OPT_INNODB_DEFAULT 1 #else @@ -1183,6 +1187,9 @@ void clean_up(bool print_message) what they have that is dependent on the binlog */ ha_binlog_end(current_thd); +#ifdef HAVE_ROW_BASED_REPLICATION + injector::free_instance(); +#endif mysql_bin_log.cleanup(); #ifdef HAVE_REPLICATION diff --git a/sql/rpl_injector.cc b/sql/rpl_injector.cc index 265f5f61213..012ff61e65e 100644 --- a/sql/rpl_injector.cc +++ b/sql/rpl_injector.cc @@ -155,6 +155,16 @@ injector *injector::instance() return s_injector; } +void injector::free_instance() +{ + injector *inj = s_injector; + + if (inj != 0) + { + s_injector= 0; + delete inj; + } +} injector::transaction injector::new_trans(THD *thd) diff --git a/sql/rpl_injector.h b/sql/rpl_injector.h index 14d5cca9b6c..c09e9753df3 100644 --- a/sql/rpl_injector.h +++ b/sql/rpl_injector.h @@ -59,6 +59,11 @@ public: */ static injector *instance(); + /* + Delete the singleton instance (if allocated). Used during server shutdown. + */ + static void free_instance(); + /* A transaction where rows can be added.