Post-review fixes for BUG#14376: MySQL crash on scoped variable (re)initialization
This commit is contained in:
parent
c4c2dc079b
commit
ed6e09a38c
@ -150,7 +150,7 @@ sp_pcontext::diff_cursors(sp_pcontext *ctx)
|
|||||||
sp_pvar_t *
|
sp_pvar_t *
|
||||||
sp_pcontext::find_pvar(LEX_STRING *name, my_bool scoped)
|
sp_pcontext::find_pvar(LEX_STRING *name, my_bool scoped)
|
||||||
{
|
{
|
||||||
uint i= m_pboundary;
|
uint i= m_pvar.elements - m_pboundary;
|
||||||
|
|
||||||
while (i--)
|
while (i--)
|
||||||
{
|
{
|
||||||
@ -186,7 +186,6 @@ sp_pcontext::push_pvar(LEX_STRING *name, enum enum_field_types type,
|
|||||||
p->offset= current_pvars();
|
p->offset= current_pvars();
|
||||||
p->dflt= NULL;
|
p->dflt= NULL;
|
||||||
insert_dynamic(&m_pvar, (gptr)&p);
|
insert_dynamic(&m_pvar, (gptr)&p);
|
||||||
m_pboundary= m_pvar.elements;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,7 +164,6 @@ class sp_pcontext : public Sql_alloc
|
|||||||
{
|
{
|
||||||
while (num--)
|
while (num--)
|
||||||
pop_dynamic(&m_pvar);
|
pop_dynamic(&m_pvar);
|
||||||
m_pboundary= m_pvar.elements;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Find by name
|
// Find by name
|
||||||
@ -184,12 +183,14 @@ class sp_pcontext : public Sql_alloc
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the current scope boundary (for default values)
|
/*
|
||||||
// The argument is the number of variables to skip.
|
Set the current scope boundary (for default values)
|
||||||
|
The argument is the number of variables to skip.
|
||||||
|
*/
|
||||||
inline void
|
inline void
|
||||||
declare_var_boundary(uint n)
|
declare_var_boundary(uint n)
|
||||||
{
|
{
|
||||||
m_pboundary= m_pvar.elements-n;
|
m_pboundary= n;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -297,10 +298,10 @@ private:
|
|||||||
uint m_poffset; // Variable offset for this context
|
uint m_poffset; // Variable offset for this context
|
||||||
uint m_coffset; // Cursor offset for this context
|
uint m_coffset; // Cursor offset for this context
|
||||||
/*
|
/*
|
||||||
Boundary for finding variables in this in this context.
|
Boundary for finding variables in this context. This is the number
|
||||||
This is normally the same as m_pvar.elements, but differs during
|
of variables currently "invisible" to default clauses.
|
||||||
parsing of DECLARE ... DEFAULT, to get the scope right for DEFAULT
|
This is normally 0, but will be larger during parsing of
|
||||||
values.
|
DECLARE ... DEFAULT, to get the scope right for DEFAULT values.
|
||||||
*/
|
*/
|
||||||
uint m_pboundary;
|
uint m_pboundary;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user