Commit a1565cdc authored by unknown's avatar unknown
Browse files

fix safemalloc warnings


sql/log.cc:
  split logging cleanup function in two
  and do actual delete of the log event
  handlers
sql/log.h:
  split logging cleanup function in two
sql/mysqld.cc:
  split logger cleanup in two phases
parent cbfc0f4c
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -561,17 +561,28 @@ bool LOGGER::error_log_print(enum loglevel level, const char *format,
}


void LOGGER::cleanup()
void LOGGER::cleanup_base()
{
  DBUG_ASSERT(inited == 1);
  (void) pthread_mutex_destroy(&LOCK_logger);
  if (table_log_handler)
  {
    table_log_handler->cleanup();
    delete table_log_handler;
  }
  if (file_log_handler)
    file_log_handler->cleanup();
}


void LOGGER::cleanup_end()
{
  DBUG_ASSERT(inited == 1);
  if (file_log_handler)
    delete file_log_handler;
}


void LOGGER::close_log_table(uint log_type, bool lock_in_use)
{
  table_log_handler->close_log_table(log_type, lock_in_use);
+4 −1
Original line number Diff line number Diff line
@@ -479,7 +479,10 @@ class LOGGER
  {
    return (THD *) table_log_handler->slow_log_thd;
  }
  void cleanup();
  /* Perform basic logger cleanup. this will leave e.g. error log open. */
  void cleanup_base();
  /* Free memory. Nothing could be logged after this function is called */
  void cleanup_end();
  bool error_log_print(enum loglevel level, const char *format,
                      va_list args);
  bool slow_log_print(THD *thd, const char *query, uint query_length,
+4 −1
Original line number Diff line number Diff line
@@ -1144,7 +1144,8 @@ void clean_up(bool print_message)
  if (cleanup_done++)
    return; /* purecov: inspected */

  logger.cleanup();
  logger.cleanup_base();

  /*
    make sure that handlers finish up
    what they have that is dependent on the binlog
@@ -1237,6 +1238,8 @@ void clean_up(bool print_message)
  /* do the broadcast inside the lock to ensure that my_end() is not called */
  (void) pthread_cond_broadcast(&COND_thread_count);
  (void) pthread_mutex_unlock(&LOCK_thread_count);
  logger.cleanup_end();

  /*
    The following lines may never be executed as the main thread may have
    killed us