summaryrefslogtreecommitdiff
path: root/strings
diff options
context:
space:
mode:
authorunknown <bar@bar.intranet.mysql.r18.ru>2006-06-19 11:18:05 +0500
committerunknown <bar@bar.intranet.mysql.r18.ru>2006-06-19 11:18:05 +0500
commitca741138e7fa943fdd2afe972731ae2cf4b8d7c6 (patch)
tree7ed87d0cf61ca81ccf1058864cb7459bbeee6b3a /strings
parent96f83a0d8aef38e60a7bb7bbda81173ac4ca859d (diff)
parentd3bb4670a9d4b3dfc125b253383534693dc9fa59 (diff)
downloadmariadb-git-ca741138e7fa943fdd2afe972731ae2cf4b8d7c6.tar.gz
Merge mysql.com:/usr/home/bar/mysql-5.1-new.b18201
into mysql.com:/usr/home/bar/mysql-5.1-kt mysql-test/r/xml.result: Auto merged mysql-test/t/xml.test: Auto merged sql/item_xmlfunc.cc: Auto merged
Diffstat (limited to 'strings')
-rw-r--r--strings/xml.c27
1 files changed, 19 insertions, 8 deletions
diff --git a/strings/xml.c b/strings/xml.c
index 4c09e85604d..76fdd07f25e 100644
--- a/strings/xml.c
+++ b/strings/xml.c
@@ -43,7 +43,7 @@ static const char *lex2str(int lex)
{
switch(lex)
{
- case MY_XML_EOF: return "EOF";
+ case MY_XML_EOF: return "END-OF-INPUT";
case MY_XML_STRING: return "STRING";
case MY_XML_IDENT: return "IDENT";
case MY_XML_CDATA: return "CDATA";
@@ -195,8 +195,13 @@ static int my_xml_leave(MY_XML_PARSER *p, const char *str, uint slen)
if (str && (slen != glen))
{
mstr(s,str,sizeof(s)-1,slen);
- mstr(g,e+1,sizeof(g)-1,glen),
- sprintf(p->errstr,"'</%s>' unexpected ('</%s>' wanted)",s,g);
+ if (glen)
+ {
+ mstr(g,e+1,sizeof(g)-1,glen),
+ sprintf(p->errstr,"'</%s>' unexpected ('</%s>' wanted)",s,g);
+ }
+ else
+ sprintf(p->errstr,"'</%s>' unexpected (END-OF-INPUT wanted)", s);
return MY_XML_ERROR;
}
@@ -247,7 +252,7 @@ int my_xml_parse(MY_XML_PARSER *p,const char *str, uint len)
{
if (MY_XML_IDENT != (lex=my_xml_scan(p,&a)))
{
- sprintf(p->errstr,"1: %s unexpected (ident wanted)",lex2str(lex));
+ sprintf(p->errstr,"%s unexpected (ident wanted)",lex2str(lex));
return MY_XML_ERROR;
}
if (MY_XML_OK != my_xml_leave(p,a.beg,(uint) (a.end-a.beg)))
@@ -275,7 +280,7 @@ int my_xml_parse(MY_XML_PARSER *p,const char *str, uint len)
}
else
{
- sprintf(p->errstr,"3: %s unexpected (ident or '/' wanted)",
+ sprintf(p->errstr,"%s unexpected (ident or '/' wanted)",
lex2str(lex));
return MY_XML_ERROR;
}
@@ -297,7 +302,7 @@ int my_xml_parse(MY_XML_PARSER *p,const char *str, uint len)
}
else
{
- sprintf(p->errstr,"4: %s unexpected (ident or string wanted)",
+ sprintf(p->errstr,"%s unexpected (ident or string wanted)",
lex2str(lex));
return MY_XML_ERROR;
}
@@ -325,7 +330,7 @@ gt:
{
if (lex != MY_XML_QUESTION)
{
- sprintf(p->errstr,"6: %s unexpected ('?' wanted)",lex2str(lex));
+ sprintf(p->errstr,"%s unexpected ('?' wanted)",lex2str(lex));
return MY_XML_ERROR;
}
if (MY_XML_OK != my_xml_leave(p,NULL,0))
@@ -341,7 +346,7 @@ gt:
if (lex != MY_XML_GT)
{
- sprintf(p->errstr,"5: %s unexpected ('>' wanted)",lex2str(lex));
+ sprintf(p->errstr,"%s unexpected ('>' wanted)",lex2str(lex));
return MY_XML_ERROR;
}
}
@@ -359,6 +364,12 @@ gt:
}
}
}
+
+ if (p->attr[0])
+ {
+ sprintf(p->errstr,"unexpected END-OF-INPUT");
+ return MY_XML_ERROR;
+ }
return MY_XML_OK;
}