diff options
author | konstantin@bodhi.netgear <> | 2006-07-07 03:07:45 +0400 |
---|---|---|
committer | konstantin@bodhi.netgear <> | 2006-07-07 03:07:45 +0400 |
commit | 343a5244dc0d5d62023eabc26b060d9c52efb762 (patch) | |
tree | b88b67acc5c244272973fd3c27485b8b9c7336bc /sql/sp_head.cc | |
parent | 01bc761690738a857540f22389d0328c91492be7 (diff) | |
download | mariadb-git-343a5244dc0d5d62023eabc26b060d9c52efb762.tar.gz |
After merge fixes.
Diffstat (limited to 'sql/sp_head.cc')
-rw-r--r-- | sql/sp_head.cc | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/sql/sp_head.cc b/sql/sp_head.cc index 1ebd645d9f9..81f5d502ec9 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -495,20 +495,32 @@ sp_head::init_strings(THD *thd, LEX *lex, sp_name *name) /* During parsing, we must use thd->mem_root */ MEM_ROOT *root= thd->mem_root; - DBUG_ASSERT(name); - /* Must be initialized in the parser */ - DBUG_ASSERT(name->m_db.str && name->m_db.length); - - /* We have to copy strings to get them into the right memroot */ - m_db.length= name->m_db.length; - m_db.str= strmake_root(root, name->m_db.str, name->m_db.length); - m_name.length= name->m_name.length; - m_name.str= strmake_root(root, name->m_name.str, name->m_name.length); - - if (name->m_qname.length == 0) - name->init_qname(thd); - m_qname.length= name->m_qname.length; - m_qname.str= strmake_root(root, name->m_qname.str, m_qname.length); + if (name) + { + /* Must be initialized in the parser */ + DBUG_ASSERT(name->m_db.str && name->m_db.length); + + /* We have to copy strings to get them into the right memroot */ + m_db.length= name->m_db.length; + m_db.str= strmake_root(root, name->m_db.str, name->m_db.length); + m_name.length= name->m_name.length; + m_name.str= strmake_root(root, name->m_name.str, name->m_name.length); + + if (name->m_qname.length == 0) + name->init_qname(thd); + m_qname.length= name->m_qname.length; + m_qname.str= strmake_root(root, name->m_qname.str, m_qname.length); + } + else + { + /* + FIXME: the only use case when name is NULL is events, and it should + be rewritten soon. Remove the else part and replace 'if' with + an assert when this is done. + */ + LEX_STRING str_reset= { NULL, 0 }; + m_db= m_name= m_qname= str_reset; + } if (m_param_begin && m_param_end) { |