diff --git a/sql/ha_ndbcluster_binlog.cc b/sql/ha_ndbcluster_binlog.cc
index 28756c54c7f368ea753acb24a6bc345b3e951839..a7e9cc4cb74db1883fa26d63ca0d3cfb142bf1c2 100644
--- a/sql/ha_ndbcluster_binlog.cc
+++ b/sql/ha_ndbcluster_binlog.cc
@@ -1641,7 +1641,8 @@ int ndb_add_binlog_index(THD *thd, void *_row)
     {
       if (need_reopen)
       {
-        close_tables_for_reopen(thd, &binlog_tables);
+        TABLE_LIST *p_binlog_tables= &binlog_tables;
+        close_tables_for_reopen(thd, &p_binlog_tables);
 	binlog_index= 0;
         continue;
       }
diff --git a/sql/log_event.cc b/sql/log_event.cc
index cd16745df90314a07d12c2c5e660d7e6ab342b76..5b95b87bcd20a9114db09541dae440a90beb445f 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -5281,6 +5281,7 @@ int Rows_log_event::exec_event(st_relay_log_info *rli)
       tested replicate-* rules).
     */
     TABLE_LIST table_list;
+    TABLE_LIST *tables= &table_list;
     bool need_reopen;
     uint count= 1;
     bzero(&table_list, sizeof(table_list));
@@ -5330,13 +5331,12 @@ int Rows_log_event::exec_event(st_relay_log_info *rli)
        */
       thd->binlog_flush_pending_rows_event(false);
 
-      close_tables_for_reopen(thd, &table_list);
+      close_tables_for_reopen(thd, &tables);
 
       /* open the table again, same as in Table_map_event::exec_event */
       table_list.db= const_cast<char*>(db);
       table_list.alias= table_list.table_name= const_cast<char*>(table_name);
       table_list.updating= 1;
-      TABLE_LIST *tables= &table_list;
       if ((error= open_tables(thd, &tables, &count, 0)) == 0)
       {
         /* reset some variables for the table list*/