diff options
author | unknown <bar@bar.intranet.mysql.r18.ru> | 2006-06-19 11:18:05 +0500 |
---|---|---|
committer | unknown <bar@bar.intranet.mysql.r18.ru> | 2006-06-19 11:18:05 +0500 |
commit | ca741138e7fa943fdd2afe972731ae2cf4b8d7c6 (patch) | |
tree | 7ed87d0cf61ca81ccf1058864cb7459bbeee6b3a /strings | |
parent | 96f83a0d8aef38e60a7bb7bbda81173ac4ca859d (diff) | |
parent | d3bb4670a9d4b3dfc125b253383534693dc9fa59 (diff) | |
download | mariadb-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.c | 27 |
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; } |