Commit 1e4d1f9b authored by unknown's avatar unknown

Fixed memory leak (found by rpl_row_inexist_tbl)


sql/handler.cc:
  Made code more portable
parent feb578be
......@@ -3268,10 +3268,11 @@ namespace
if (thd->get_binlog_table_maps() == 0)
{
MYSQL_LOCK *const locks[] = {
thd->extra_lock, thd->lock, thd->locked_tables
};
for (my_ptrdiff_t i= 0 ; i < sizeof(locks)/sizeof(*locks) ; ++i )
MYSQL_LOCK *locks[3];
locks[0]= thd->extra_lock;
locks[1]= thd->lock;
locks[2]= thd->locked_tables;
for (uint i= 0 ; i < sizeof(locks)/sizeof(*locks) ; ++i )
{
MYSQL_LOCK const *const lock= locks[i];
if (lock == NULL)
......
......@@ -5871,7 +5871,7 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli)
table_list->db, table_list->table_name);
thd->query_error= 1;
}
DBUG_RETURN(error);
goto err;
}
m_table= table_list->table;
......@@ -5948,7 +5948,8 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli)
}
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)
locked by linking the table into the list of tables to lock, and
tell the RLI that we are touching a table.
*/
if (!error)
{
table_list->next_global= table_list->next_local= rli->tables_to_lock;
rli->tables_to_lock= table_list;
rli->tables_to_lock_count++;
}
table_list->next_global= table_list->next_local= rli->tables_to_lock;
rli->tables_to_lock= table_list;
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)
if (likely(!error))
rli->inc_event_relay_log_pos();
DBUG_RETURN(error);
err:
my_free((gptr) memory, MYF(MY_WME));
DBUG_RETURN(error);
}
#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