Commit 7ec5a7ec authored by monty@mysql.com's avatar monty@mysql.com

Fixed memory leak (found by rpl_row_inexist_tbl)

parent fba475cc
...@@ -3268,10 +3268,11 @@ namespace ...@@ -3268,10 +3268,11 @@ namespace
if (thd->get_binlog_table_maps() == 0) if (thd->get_binlog_table_maps() == 0)
{ {
MYSQL_LOCK *const locks[] = { MYSQL_LOCK *locks[3];
thd->extra_lock, thd->lock, thd->locked_tables locks[0]= thd->extra_lock;
}; locks[1]= thd->lock;
for (my_ptrdiff_t i= 0 ; i < sizeof(locks)/sizeof(*locks) ; ++i ) locks[2]= thd->locked_tables;
for (uint i= 0 ; i < sizeof(locks)/sizeof(*locks) ; ++i )
{ {
MYSQL_LOCK const *const lock= locks[i]; MYSQL_LOCK const *const lock= locks[i];
if (lock == NULL) if (lock == NULL)
......
...@@ -5871,7 +5871,7 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli) ...@@ -5871,7 +5871,7 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli)
table_list->db, table_list->table_name); table_list->db, table_list->table_name);
thd->query_error= 1; thd->query_error= 1;
} }
DBUG_RETURN(error); goto err;
} }
m_table= table_list->table; m_table= table_list->table;
...@@ -5948,7 +5948,8 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli) ...@@ -5948,7 +5948,8 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli)
} }
thd->query_error= 1; thd->query_error= 1;
DBUG_RETURN(ERR_BAD_TABLE_DEF); error= ERR_BAD_TABLE_DEF;
goto err;
} }
/* /*
...@@ -5956,12 +5957,10 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli) ...@@ -5956,12 +5957,10 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli)
locked by linking the table into the list of tables to lock, and locked by linking the table into the list of tables to lock, and
tell the RLI that we are touching a table. tell the RLI that we are touching a table.
*/ */
if (!error)
{
table_list->next_global= table_list->next_local= rli->tables_to_lock; table_list->next_global= table_list->next_local= rli->tables_to_lock;
rli->tables_to_lock= table_list; rli->tables_to_lock= table_list;
rli->tables_to_lock_count++; rli->tables_to_lock_count++;
} /* 'memory' is freed in clear_tables_to_lock */
} }
/* /*
...@@ -5976,7 +5975,10 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli) ...@@ -5976,7 +5975,10 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli)
if (likely(!error)) if (likely(!error))
rli->inc_event_relay_log_pos(); rli->inc_event_relay_log_pos();
DBUG_RETURN(error);
err:
my_free((gptr) memory, MYF(MY_WME));
DBUG_RETURN(error); DBUG_RETURN(error);
} }
#endif /* !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION) */ #endif /* !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION) */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment