summaryrefslogtreecommitdiff
path: root/sql/item_xmlfunc.cc
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2013-02-28 09:58:39 +0100
committerSergei Golubchik <sergii@pisem.net>2013-02-28 09:58:39 +0100
commit08ba257846e75641304e530b7a4a4ab21b1714d7 (patch)
tree5152c8e758f3b566dda4bf07bf5aad1607910eda /sql/item_xmlfunc.cc
parent65831bca6f516db383c1bc04884b65b9fa7b6926 (diff)
parent40bbd1862376fa634e42b4e0197e22f5633f0c21 (diff)
downloadmariadb-git-08ba257846e75641304e530b7a4a4ab21b1714d7.tar.gz
mysql-5.1 merge
mysys/errors.c: revert upstream's fix. use a much simpler one mysys/my_write.c: revert upstream's fix. use a simpler one sql/item_xmlfunc.cc: useless, but ok sql/mysqld.cc: simplify upstream's fix storage/heap/hp_delete.c: remove upstream's fix. we'll use a much less expensive approach.
Diffstat (limited to 'sql/item_xmlfunc.cc')
-rw-r--r--sql/item_xmlfunc.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/sql/item_xmlfunc.cc b/sql/item_xmlfunc.cc
index 7464fbb440e..c066f1b9744 100644
--- a/sql/item_xmlfunc.cc
+++ b/sql/item_xmlfunc.cc
@@ -2669,8 +2669,12 @@ int xml_enter(MY_XML_PARSER *st,const char *attr, size_t len)
node.parent= data->parent; // Set parent for the new node to old parent
data->parent= numnodes; // Remember current node as new parent
+ DBUG_ASSERT(data->level <= MAX_LEVEL);
data->pos[data->level]= numnodes;
- node.level= data->level++;
+ if (data->level < MAX_LEVEL)
+ node.level= data->level++;
+ else
+ return MY_XML_ERROR;
node.type= st->current_node_type; // TAG or ATTR
node.beg= attr;
node.end= attr + len;