mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
The fix for BUG 21136 (ChangeSet@1.2611.1.1) introduced a regression that
caused a few tests to fail because the thd->extra_lock wasn't being set to NULL after the table was unlocked. This poses a serious problem because later attempts to access thd->extra_lock (now a dangling pointer) will probably result in a crash (undefined behavior) -- and that's what actually happens in some test cases. The solution is to set the select_create::m_plock pointee to NULL, which means that thd->extra_lock is set to NULL when the lock data is not for a temporary table.
This commit is contained in:
@ -3653,7 +3653,8 @@ bool select_create::send_eof()
|
|||||||
if (m_plock)
|
if (m_plock)
|
||||||
{
|
{
|
||||||
mysql_unlock_tables(thd, *m_plock);
|
mysql_unlock_tables(thd, *m_plock);
|
||||||
m_plock= 0;
|
*m_plock= NULL;
|
||||||
|
m_plock= NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return tmp;
|
return tmp;
|
||||||
@ -3691,7 +3692,8 @@ void select_create::abort()
|
|||||||
if (m_plock)
|
if (m_plock)
|
||||||
{
|
{
|
||||||
mysql_unlock_tables(thd, *m_plock);
|
mysql_unlock_tables(thd, *m_plock);
|
||||||
m_plock= 0;
|
*m_plock= NULL;
|
||||||
|
m_plock= NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (table)
|
if (table)
|
||||||
|
Reference in New Issue
Block a user