diff --git a/ChangeLog b/ChangeLog index dfd0c2bc..8fbab434 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +Sun Sep 14 21:43:32 CEST 2003 Daniel Veillard + + * parser.c include/libxml/xmlerror.h: factoring of more + error handling code, serious size reduction and more lisibility + of the resulting code. + * parserInternals.c parser.c include/libxml/parserInternals.h + include/libxml/parser.h: changing the way VC:Proper Group/PE Nesting + checks are done, use a counter for entities. Entities where freed and + reallocated at the same address failing the check. + * tree.c: avoid a warning + * result/valid/* result/VC/*: this slightly changes some validation + error messages. + Sun Sep 14 11:03:27 PDT 2003 William Brack * valid.c: fixed bug 121759 - early declaration of diff --git a/include/libxml/parser.h b/include/libxml/parser.h index 7a0eaeab..2d725f5c 100644 --- a/include/libxml/parser.h +++ b/include/libxml/parser.h @@ -68,6 +68,7 @@ struct _xmlParserInput { const xmlChar *encoding; /* the encoding string for entity */ const xmlChar *version; /* the version string for entity */ int standalone; /* Was that entity marked standalone */ + int id; /* an unique identifier for the entity */ }; /** diff --git a/include/libxml/parserInternals.h b/include/libxml/parserInternals.h index b691787f..6e6f08c9 100644 --- a/include/libxml/parserInternals.h +++ b/include/libxml/parserInternals.h @@ -313,11 +313,11 @@ XMLPUBFUN void XMLCALL XMLPUBFUN xmlElementContentPtr XMLCALL xmlParseElementMixedContentDecl (xmlParserCtxtPtr ctxt, - xmlParserInputPtr inputchk); + int inputchk); XMLPUBFUN xmlElementContentPtr XMLCALL xmlParseElementChildrenContentDecl (xmlParserCtxtPtr ctxt, - xmlParserInputPtr inputchk); + int inputchk); XMLPUBFUN int XMLCALL xmlParseElementContentDecl(xmlParserCtxtPtr ctxt, const xmlChar *name, diff --git a/include/libxml/xmlerror.h b/include/libxml/xmlerror.h index 20848599..fbccf82e 100644 --- a/include/libxml/xmlerror.h +++ b/include/libxml/xmlerror.h @@ -140,7 +140,8 @@ typedef enum { XML_NS_ERR_UNDEFINED_NAMESPACE, XML_NS_ERR_QNAME, XML_NS_ERR_ATTRIBUTE_REDEFINED, - XML_ERR_CONDSEC_INVALID_KEYWORD + XML_ERR_CONDSEC_INVALID_KEYWORD, + XML_ERR_VERSION_MISSING } xmlParserErrors; /** diff --git a/parser.c b/parser.c index bf4e78a9..a9b59c4e 100644 --- a/parser.c +++ b/parser.c @@ -371,6 +371,9 @@ xmlFatalErr(xmlParserCtxtPtr ctxt, xmlParserErrors error, const char * info) case XML_ERR_EXTRA_CONTENT: errmsg = "extra content at the end of well balanced chunk\n"; break; + case XML_ERR_VERSION_MISSING: + errmsg = "Malformed declaration expecting version\n"; + break; #if 0 case : errmsg = "\n"; @@ -390,6 +393,91 @@ xmlFatalErr(xmlParserCtxtPtr ctxt, xmlParserErrors error, const char * info) ctxt->disableSAX = 1; } +/** + * xmlFatalErrMsg: + * @ctxt: an XML parser context + * @error: the error number + * @msg: the error message + * + * Handle a fatal parser error, i.e. violating Well-Formedness constraints + */ +static void +xmlFatalErrMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error, const char *msg) +{ + if (ctxt == NULL) { + xmlGenericError(xmlGenericErrorContext, + "xmlFatalErr: no context !\n"); + return; + } + ctxt->errNo = error; + if ((ctxt->sax == NULL) || (ctxt->sax->error == NULL)) + return; + ctxt->sax->error(ctxt->userData, msg); + ctxt->wellFormed = 0; + if (ctxt->recovery == 0) + ctxt->disableSAX = 1; +} + +/** + * xmlFatalErrMsgInt: + * @ctxt: an XML parser context + * @error: the error number + * @msg: the error message + * @val: an integer value + * + * Handle a fatal parser error, i.e. violating Well-Formedness constraints + */ +static void +xmlFatalErrMsgInt(xmlParserCtxtPtr ctxt, xmlParserErrors error, + const char *msg, int val) +{ + if (ctxt == NULL) { + xmlGenericError(xmlGenericErrorContext, + "xmlFatalErr: no context !\n"); + return; + } + ctxt->errNo = error; + if ((ctxt->sax == NULL) || (ctxt->sax->error == NULL)) + return; + ctxt->sax->error(ctxt->userData, msg, val); + ctxt->wellFormed = 0; + if (ctxt->recovery == 0) + ctxt->disableSAX = 1; +} + +/** + * xmlNsErr: + * @ctxt: an XML parser context + * @error: the error number + * @msg: the message + * @info1: extra information string + * @info2: extra information string + * + * Handle a fatal parser error, i.e. violating Well-Formedness constraints + */ +static void +xmlNsErr(xmlParserCtxtPtr ctxt, xmlParserErrors error, + const char *msg, + const xmlChar *info1, const xmlChar *info2, const xmlChar *info3) +{ + if (ctxt == NULL) + return; + if ((ctxt->sax == NULL) || (ctxt->sax->error == NULL)) + return; + + ctxt->errNo = error; + if (info1 == NULL) { + ctxt->sax->error(ctxt->userData, msg); + } else if (info2 == NULL) { + ctxt->sax->error(ctxt->userData, msg, info1); + } else if (info3 == NULL) { + ctxt->sax->error(ctxt->userData, msg, info1, info2); + } else { + ctxt->sax->error(ctxt->userData, msg, info1, info2, info3); + } + ctxt->nsWellFormed = 0; +} + /************************************************************************ * * * SAX2 defaulted attributes handling * @@ -729,13 +817,10 @@ nodePush(xmlParserCtxtPtr ctxt, xmlNodePtr value) } #ifdef MAX_DEPTH if (ctxt->nodeNr > MAX_DEPTH) { - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, + xmlFatalErrMsgInt(ctxt, XML_ERR_INTERNAL_ERROR, "Excessive depth in document: change MAX_DEPTH = %d\n", - MAX_DEPTH); - ctxt->wellFormed = 0; + MAX_DEPTH); ctxt->instate = XML_PARSER_EOF; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; return(0); } #endif @@ -1220,13 +1305,9 @@ xmlParseCharRef(xmlParserCtxtPtr ctxt) { if (IS_CHAR(val)) { return(val); } else { - ctxt->errNo = XML_ERR_INVALID_CHAR; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "xmlParseCharRef: invalid xmlChar value %d\n", - val); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsgInt(ctxt, XML_ERR_INVALID_CHAR, + "xmlParseCharRef: invalid xmlChar value %d\n", + val); } return(0); } @@ -1308,12 +1389,9 @@ xmlParseStringCharRef(xmlParserCtxtPtr ctxt, const xmlChar **str) { if (IS_CHAR(val)) { return(val); } else { - ctxt->errNo = XML_ERR_INVALID_CHAR; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "xmlParseStringCharRef: invalid xmlChar value %d\n", val); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsgInt(ctxt, XML_ERR_INVALID_CHAR, + "xmlParseStringCharRef: invalid xmlChar value %d\n", + val); } return(0); } @@ -2838,13 +2916,9 @@ xmlParseEntityValue(xmlParserCtxtPtr ctxt, xmlChar **orig) { cur++; name = xmlParseStringName(ctxt, &cur); if ((name == NULL) || (*cur != ';')) { - ctxt->errNo = XML_ERR_ENTITY_CHAR_ERROR; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, + xmlFatalErrMsgInt(ctxt, XML_ERR_ENTITY_CHAR_ERROR, "EntityValue: '%c' forbidden except for entities references\n", - tmp); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + tmp); } if ((tmp == '%') && (ctxt->inSubset == 1) && (ctxt->inputNr == 1)) { @@ -3063,11 +3137,8 @@ xmlParseAttValueComplex(xmlParserCtxtPtr ctxt, int *attlen, int normalize) { if (RAW == '<') { xmlFatalErr(ctxt, XML_ERR_LT_IN_ATTRIBUTE, NULL); } else if (RAW != limit) { - ctxt->errNo = XML_ERR_ATTRIBUTE_NOT_FINISHED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, "AttValue: ' expected\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, + "AttValue: ' expected\n"); } else NEXT; if (attlen != NULL) *attlen = len; @@ -3474,12 +3545,8 @@ xmlParseExternalID(xmlParserCtxtPtr ctxt, xmlChar **publicID, int strict) { (NXT(4) == 'E') && (NXT(5) == 'M')) { SKIP(6); if (!IS_BLANK(CUR)) { - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "Space required after 'SYSTEM'\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "Space required after 'SYSTEM'\n"); } SKIP_BLANKS; URI = xmlParseSystemLiteral(ctxt); @@ -3491,12 +3558,8 @@ xmlParseExternalID(xmlParserCtxtPtr ctxt, xmlChar **publicID, int strict) { (NXT(4) == 'I') && (NXT(5) == 'C')) { SKIP(6); if (!IS_BLANK(CUR)) { - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, "Space required after 'PUBLIC'\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; } SKIP_BLANKS; *publicID = xmlParsePubidLiteral(ctxt); @@ -3508,12 +3571,8 @@ xmlParseExternalID(xmlParserCtxtPtr ctxt, xmlChar **publicID, int strict) { * We don't handle [83] so "S SystemLiteral" is required. */ if (!IS_BLANK(CUR)) { - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, "Space required after the Public Identifier\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; } } else { /* @@ -3628,12 +3687,8 @@ xmlParseComment(xmlParserCtxtPtr ctxt) { xmlFree(buf); } else { if (input != ctxt->input) { - ctxt->errNo = XML_ERR_ENTITY_BOUNDARY; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, -"Comment doesn't start and stop in the same entity\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY, + "Comment doesn't start and stop in the same entity\n"); } NEXT; if ((ctxt->sax != NULL) && (ctxt->sax->comment != NULL) && @@ -3667,12 +3722,8 @@ xmlParsePITarget(xmlParserCtxtPtr ctxt) { int i; if ((name[0] == 'x') && (name[1] == 'm') && (name[2] == 'l') && (name[3] == 0)) { - ctxt->errNo = XML_ERR_RESERVED_XML_NAME; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, + xmlFatalErrMsg(ctxt, XML_ERR_RESERVED_XML_NAME, "XML declaration allowed only at the start of the document\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; return(name); } else if (name[3] == 0) { xmlFatalErr(ctxt, XML_ERR_RESERVED_XML_NAME, NULL); @@ -3794,12 +3845,8 @@ xmlParsePI(xmlParserCtxtPtr ctxt) { if (target != NULL) { if ((RAW == '?') && (NXT(1) == '>')) { if (input != ctxt->input) { - ctxt->errNo = XML_ERR_ENTITY_BOUNDARY; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "PI declaration doesn't start and stop in the same entity\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY, + "PI declaration doesn't start and stop in the same entity\n"); } SKIP(2); @@ -3865,12 +3912,8 @@ xmlParsePI(xmlParserCtxtPtr ctxt) { if (ctxt->recovery == 0) ctxt->disableSAX = 1; } else { if (input != ctxt->input) { - ctxt->errNo = XML_ERR_ENTITY_BOUNDARY; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "PI declaration doesn't start and stop in the same entity\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "PI declaration doesn't start and stop in the same entity\n"); } SKIP(2); @@ -3933,12 +3976,8 @@ xmlParseNotationDecl(xmlParserCtxtPtr ctxt) { SHRINK; SKIP(10); if (!IS_BLANK(CUR)) { - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "Space required after 'wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "Space required after 'errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, "Space required after the NOTATION name'\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; return; } SKIP_BLANKS; @@ -3967,12 +4002,8 @@ xmlParseNotationDecl(xmlParserCtxtPtr ctxt) { if (RAW == '>') { if (input != ctxt->input) { - ctxt->errNo = XML_ERR_ENTITY_BOUNDARY; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, -"Notation declaration doesn't start and stop in the same entity\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "Notation declaration doesn't start and stop in the same entity\n"); } NEXT; if ((ctxt->sax != NULL) && (!ctxt->disableSAX) && @@ -4028,45 +4059,30 @@ xmlParseEntityDecl(xmlParserCtxtPtr ctxt) { SKIP(8); skipped = SKIP_BLANKS; if (skipped == 0) { - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "Space required after 'wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "Space required after 'errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "Space required after '%'\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "Space required after '%'\n"); } isParameter = 1; } name = xmlParseName(ctxt); if (name == NULL) { - ctxt->errNo = XML_ERR_NAME_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, "xmlParseEntityDecl: no name\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_NAME_REQUIRED, + "xmlParseEntityDecl: no name\n"); return; } skipped = SKIP_BLANKS; if (skipped == 0) { - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "Space required after the entity name\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "Space required after the entity name\n"); } ctxt->instate = XML_PARSER_ENTITY_DECL; @@ -4179,12 +4195,8 @@ xmlParseEntityDecl(xmlParserCtxtPtr ctxt) { } } if ((RAW != '>') && (!IS_BLANK(CUR))) { - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "Space required before 'NDATA'\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "Space required before 'NDATA'\n"); } SKIP_BLANKS; if ((RAW == 'N') && (NXT(1) == 'D') && @@ -4192,12 +4204,8 @@ xmlParseEntityDecl(xmlParserCtxtPtr ctxt) { (NXT(4) == 'A')) { SKIP(5); if (!IS_BLANK(CUR)) { - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "Space required after 'NDATA'\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "Space required after 'NDATA'\n"); } SKIP_BLANKS; ndata = xmlParseName(ctxt); @@ -4242,12 +4250,8 @@ xmlParseEntityDecl(xmlParserCtxtPtr ctxt) { if (ctxt->recovery == 0) ctxt->disableSAX = 1; } else { if (input != ctxt->input) { - ctxt->errNo = XML_ERR_ENTITY_BOUNDARY; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, -"Entity declaration doesn't start and stop in the same entity\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY, + "Entity declaration doesn't start and stop in the same entity\n"); } NEXT; } @@ -4340,23 +4344,16 @@ xmlParseDefaultDecl(xmlParserCtxtPtr ctxt, xmlChar **value) { SKIP(6); val = XML_ATTRIBUTE_FIXED; if (!IS_BLANK(CUR)) { - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "Space required after '#FIXED'\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "Space required after '#FIXED'\n"); } SKIP_BLANKS; } ret = xmlParseAttValue(ctxt); ctxt->instate = XML_PARSER_DTD; if (ret == NULL) { - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "Attribute default value declaration error\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, ctxt->errNo, + "Attribute default value declaration error\n"); } else *value = ret; return(val); @@ -4394,12 +4391,8 @@ xmlParseNotationType(xmlParserCtxtPtr ctxt) { SKIP_BLANKS; name = xmlParseName(ctxt); if (name == NULL) { - ctxt->errNo = XML_ERR_NAME_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "Name expected in NOTATION declaration\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_NAME_REQUIRED, + "Name expected in NOTATION declaration\n"); return(ret); } cur = xmlCreateEnumeration(name); @@ -4495,12 +4488,8 @@ xmlParseEnumeratedType(xmlParserCtxtPtr ctxt, xmlEnumerationPtr *tree) { (NXT(6) == 'O') && (NXT(7) == 'N')) { SKIP(8); if (!IS_BLANK(CUR)) { - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "Space required after 'NOTATION'\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "Space required after 'NOTATION'\n"); return(0); } SKIP_BLANKS; @@ -4632,22 +4621,14 @@ xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt) { SKIP(9); if (!IS_BLANK(CUR)) { - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, "Space required after 'wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; } SKIP_BLANKS; elemName = xmlParseName(ctxt); if (elemName == NULL) { - ctxt->errNo = XML_ERR_NAME_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "ATTLIST: no name for Element\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_NAME_REQUIRED, + "ATTLIST: no name for Element\n"); return; } SKIP_BLANKS; @@ -4662,22 +4643,14 @@ xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt) { tree = NULL; attrName = xmlParseName(ctxt); if (attrName == NULL) { - ctxt->errNo = XML_ERR_NAME_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "ATTLIST: no name for Attribute\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_NAME_REQUIRED, + "ATTLIST: no name for Attribute\n"); break; } GROW; if (!IS_BLANK(CUR)) { - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, "Space required after the attribute name\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; if (defaultValue != NULL) xmlFree(defaultValue); break; @@ -4693,12 +4666,8 @@ xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt) { GROW; if (!IS_BLANK(CUR)) { - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "Space required after the attribute type\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "Space required after the attribute type\n"); if (defaultValue != NULL) xmlFree(defaultValue); if (tree != NULL) @@ -4719,12 +4688,8 @@ xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt) { GROW; if (RAW != '>') { if (!IS_BLANK(CUR)) { - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, "Space required after the attribute default value\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; if (defaultValue != NULL) xmlFree(defaultValue); if (tree != NULL) @@ -4763,12 +4728,8 @@ xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt) { } if (RAW == '>') { if (input != ctxt->input) { - ctxt->errNo = XML_ERR_ENTITY_BOUNDARY; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, -"Attribute list declaration doesn't start and stop in the same entity\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY, + "Attribute list declaration doesn't start and stop in the same entity\n"); } NEXT; } @@ -4795,7 +4756,7 @@ xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt) { * returns: the list of the xmlElementContentPtr describing the element choices */ xmlElementContentPtr -xmlParseElementMixedContentDecl(xmlParserCtxtPtr ctxt, xmlParserInputPtr inputchk) { +xmlParseElementMixedContentDecl(xmlParserCtxtPtr ctxt, int inputchk) { xmlElementContentPtr ret = NULL, cur = NULL, n; const xmlChar *elem = NULL; @@ -4808,7 +4769,7 @@ xmlParseElementMixedContentDecl(xmlParserCtxtPtr ctxt, xmlParserInputPtr inputch SKIP_BLANKS; SHRINK; if (RAW == ')') { - if ((ctxt->validate) && (ctxt->input != inputchk)) { + if ((ctxt->validate) && (ctxt->input->id != inputchk)) { ctxt->errNo = XML_ERR_ENTITY_BOUNDARY; if (ctxt->vctxt.error != NULL) ctxt->vctxt.error(ctxt->vctxt.userData, @@ -4850,12 +4811,8 @@ xmlParseElementMixedContentDecl(xmlParserCtxtPtr ctxt, xmlParserInputPtr inputch SKIP_BLANKS; elem = xmlParseName(ctxt); if (elem == NULL) { - ctxt->errNo = XML_ERR_NAME_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, + xmlFatalErrMsg(ctxt, XML_ERR_NAME_REQUIRED, "xmlParseElementMixedContentDecl : Name expected\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; xmlFreeElementContent(cur); return(NULL); } @@ -4870,7 +4827,7 @@ xmlParseElementMixedContentDecl(xmlParserCtxtPtr ctxt, xmlParserInputPtr inputch cur->c2->parent = cur; } ret->ocur = XML_ELEMENT_CONTENT_MULT; - if ((ctxt->validate) && (ctxt->input != inputchk)) { + if ((ctxt->validate) && (ctxt->input->id != inputchk)) { ctxt->errNo = XML_ERR_ENTITY_BOUNDARY; if (ctxt->vctxt.error != NULL) ctxt->vctxt.error(ctxt->vctxt.userData, @@ -4922,8 +4879,7 @@ xmlParseElementMixedContentDecl(xmlParserCtxtPtr ctxt, xmlParserInputPtr inputch * hierarchy. */ xmlElementContentPtr -xmlParseElementChildrenContentDecl -(xmlParserCtxtPtr ctxt, xmlParserInputPtr inputchk) { +xmlParseElementChildrenContentDecl (xmlParserCtxtPtr ctxt, int inputchk) { xmlElementContentPtr ret = NULL, cur = NULL, last = NULL, op = NULL; const xmlChar *elem; xmlChar type = 0; @@ -4931,12 +4887,12 @@ xmlParseElementChildrenContentDecl SKIP_BLANKS; GROW; if (RAW == '(') { - xmlParserInputPtr input = ctxt->input; + int inputid = ctxt->input->id; /* Recurse on first child */ NEXT; SKIP_BLANKS; - cur = ret = xmlParseElementChildrenContentDecl(ctxt, input); + cur = ret = xmlParseElementChildrenContentDecl(ctxt, inputid); SKIP_BLANKS; GROW; } else { @@ -4978,13 +4934,9 @@ xmlParseElementChildrenContentDecl * Detect "Name | Name , Name" error */ else if (type != CUR) { - ctxt->errNo = XML_ERR_SEPARATOR_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, + xmlFatalErrMsgInt(ctxt, XML_ERR_SEPARATOR_REQUIRED, "xmlParseElementChildrenContentDecl : '%c' expected\n", - type); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + type); if ((last != NULL) && (last != ret)) xmlFreeElementContent(last); if (ret != NULL) @@ -5022,13 +4974,9 @@ xmlParseElementChildrenContentDecl * Detect "Name , Name | Name" error */ else if (type != CUR) { - ctxt->errNo = XML_ERR_SEPARATOR_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, + xmlFatalErrMsgInt(ctxt, XML_ERR_SEPARATOR_REQUIRED, "xmlParseElementChildrenContentDecl : '%c' expected\n", - type); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + type); if ((last != NULL) && (last != ret)) xmlFreeElementContent(last); if (ret != NULL) @@ -5070,11 +5018,11 @@ xmlParseElementChildrenContentDecl SKIP_BLANKS; GROW; if (RAW == '(') { - xmlParserInputPtr input = ctxt->input; + int inputid = ctxt->input->id; /* Recurse on second child */ NEXT; SKIP_BLANKS; - last = xmlParseElementChildrenContentDecl(ctxt, input); + last = xmlParseElementChildrenContentDecl(ctxt, inputid); SKIP_BLANKS; } else { elem = xmlParseName(ctxt); @@ -5106,7 +5054,7 @@ xmlParseElementChildrenContentDecl if (last != NULL) last->parent = cur; } - if ((ctxt->validate) && (ctxt->input != inputchk)) { + if ((ctxt->validate) && (ctxt->input->id != inputchk)) { ctxt->errNo = XML_ERR_ENTITY_BOUNDARY; if (ctxt->vctxt.error != NULL) ctxt->vctxt.error(ctxt->vctxt.userData, @@ -5191,7 +5139,7 @@ xmlParseElementContentDecl(xmlParserCtxtPtr ctxt, const xmlChar *name, xmlElementContentPtr *result) { xmlElementContentPtr tree = NULL; - xmlParserInputPtr input = ctxt->input; + int inputid = ctxt->input->id; int res; *result = NULL; @@ -5212,10 +5160,10 @@ xmlParseElementContentDecl(xmlParserCtxtPtr ctxt, const xmlChar *name, (NXT(2) == 'C') && (NXT(3) == 'D') && (NXT(4) == 'A') && (NXT(5) == 'T') && (NXT(6) == 'A')) { - tree = xmlParseElementMixedContentDecl(ctxt, input); + tree = xmlParseElementMixedContentDecl(ctxt, inputid); res = XML_ELEMENT_TYPE_MIXED; } else { - tree = xmlParseElementChildrenContentDecl(ctxt, input); + tree = xmlParseElementChildrenContentDecl(ctxt, inputid); res = XML_ELEMENT_TYPE_ELEMENT; } SKIP_BLANKS; @@ -5252,33 +5200,21 @@ xmlParseElementDecl(xmlParserCtxtPtr ctxt) { SKIP(9); if (!IS_BLANK(CUR)) { - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "Space required after 'ELEMENT'\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "Space required after 'ELEMENT'\n"); } SKIP_BLANKS; name = xmlParseName(ctxt); if (name == NULL) { - ctxt->errNo = XML_ERR_NAME_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "xmlParseElementDecl: no name for Element\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_NAME_REQUIRED, + "xmlParseElementDecl: no name for Element\n"); return(-1); } while ((RAW == 0) && (ctxt->inputNr > 1)) xmlPopInput(ctxt); if (!IS_BLANK(CUR)) { - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "Space required after the element name\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "Space required after the element name\n"); } SKIP_BLANKS; if ((RAW == 'E') && (NXT(1) == 'M') && @@ -5304,15 +5240,18 @@ xmlParseElementDecl(xmlParserCtxtPtr ctxt) { */ if ((RAW == '%') && (ctxt->external == 0) && (ctxt->inputNr == 1)) { - xmlFatalErr(ctxt, XML_ERR_PEREF_IN_INT_SUBSET, NULL); + ctxt->errNo = XML_ERR_PEREF_IN_INT_SUBSET; + if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) + ctxt->sax->error(ctxt->userData, + "PEReference: forbidden within markup decl in internal subset\n"); } else { ctxt->errNo = XML_ERR_ELEMCONTENT_NOT_STARTED; if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) ctxt->sax->error(ctxt->userData, "xmlParseElementDecl: 'EMPTY', 'ANY' or '(' expected\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; } + ctxt->wellFormed = 0; + if (ctxt->recovery == 0) ctxt->disableSAX = 1; return(-1); } @@ -5328,12 +5267,8 @@ xmlParseElementDecl(xmlParserCtxtPtr ctxt) { xmlFatalErr(ctxt, XML_ERR_GT_REQUIRED, NULL); } else { if (input != ctxt->input) { - ctxt->errNo = XML_ERR_ENTITY_BOUNDARY; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, -"Element declaration doesn't start and stop in the same entity\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_BOUNDARY, + "Element declaration doesn't start and stop in the same entity\n"); } NEXT; @@ -5567,12 +5502,8 @@ xmlParseTextDecl(xmlParserCtxtPtr ctxt) { } if (!IS_BLANK(CUR)) { - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "Space needed after 'wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "Space needed after 'errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, "Space needed here\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "Space needed here\n"); } } ctxt->input->version = version; @@ -5999,12 +5927,8 @@ xmlParseReference(xmlParserCtxtPtr ctxt) { return; } if (input->standalone == 1) { - ctxt->errNo = XML_ERR_EXT_ENTITY_STANDALONE; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "external parsed entities cannot be standalone\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErr(ctxt, XML_ERR_EXT_ENTITY_STANDALONE, + NULL); } } return; @@ -6062,12 +5986,8 @@ xmlParseEntityRef(xmlParserCtxtPtr ctxt) { NEXT; name = xmlParseName(ctxt); if (name == NULL) { - ctxt->errNo = XML_ERR_NAME_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "xmlParseEntityRef: no name\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_NAME_REQUIRED, + "xmlParseEntityRef: no name\n"); } else { if (RAW == ';') { NEXT; @@ -6200,12 +6120,7 @@ xmlParseEntityRef(xmlParserCtxtPtr ctxt) { */ } else { - ctxt->errNo = XML_ERR_ENTITYREF_SEMICOL_MISSING; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "xmlParseEntityRef: expecting ';'\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErr(ctxt, XML_ERR_ENTITYREF_SEMICOL_MISSING, NULL); } } } @@ -6259,12 +6174,8 @@ xmlParseStringEntityRef(xmlParserCtxtPtr ctxt, const xmlChar ** str) { cur = *ptr; name = xmlParseStringName(ctxt, &ptr); if (name == NULL) { - ctxt->errNo = XML_ERR_NAME_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "xmlParseStringEntityRef: no name\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_NAME_REQUIRED, + "xmlParseStringEntityRef: no name\n"); } else { if (*ptr == ';') { ptr++; @@ -6394,12 +6305,7 @@ xmlParseStringEntityRef(xmlParserCtxtPtr ctxt, const xmlChar ** str) { */ } else { - ctxt->errNo = XML_ERR_ENTITYREF_SEMICOL_MISSING; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "xmlParseStringEntityRef: expecting ';'\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErr(ctxt, XML_ERR_ENTITYREF_SEMICOL_MISSING, NULL); } xmlFree(name); } @@ -6447,12 +6353,8 @@ xmlParsePEReference(xmlParserCtxtPtr ctxt) { NEXT; name = xmlParseName(ctxt); if (name == NULL) { - ctxt->errNo = XML_ERR_NAME_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "xmlParsePEReference: no name\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_NAME_REQUIRED, + "xmlParsePEReference: no name\n"); } else { if (RAW == ';') { NEXT; @@ -6531,12 +6433,7 @@ xmlParsePEReference(xmlParserCtxtPtr ctxt) { } ctxt->hasPErefs = 1; } else { - ctxt->errNo = XML_ERR_ENTITYREF_SEMICOL_MISSING; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "xmlParsePEReference: expecting ';'\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErr(ctxt, XML_ERR_ENTITYREF_SEMICOL_MISSING, NULL); } } } @@ -6588,12 +6485,8 @@ xmlParseStringPEReference(xmlParserCtxtPtr ctxt, const xmlChar **str) { cur = *ptr; name = xmlParseStringName(ctxt, &ptr); if (name == NULL) { - ctxt->errNo = XML_ERR_NAME_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "xmlParseStringPEReference: no name\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_NAME_REQUIRED, + "xmlParseStringPEReference: no name\n"); } else { cur = *ptr; if (cur == ';') { @@ -6647,12 +6540,7 @@ xmlParseStringPEReference(xmlParserCtxtPtr ctxt, const xmlChar **str) { } ctxt->hasPErefs = 1; } else { - ctxt->errNo = XML_ERR_ENTITYREF_SEMICOL_MISSING; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "xmlParseStringPEReference: expecting ';'\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErr(ctxt, XML_ERR_ENTITYREF_SEMICOL_MISSING, NULL); } xmlFree(name); } @@ -6693,12 +6581,8 @@ xmlParseDocTypeDecl(xmlParserCtxtPtr ctxt) { */ name = xmlParseName(ctxt); if (name == NULL) { - ctxt->errNo = XML_ERR_NAME_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "xmlParseDocTypeDecl : no DOCTYPE name !\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_NAME_REQUIRED, + "xmlParseDocTypeDecl : no DOCTYPE name !\n"); } ctxt->intSubName = name; @@ -6735,11 +6619,7 @@ xmlParseDocTypeDecl(xmlParserCtxtPtr ctxt) { * We should be at the end of the DOCTYPE declaration. */ if (RAW != '>') { - ctxt->errNo = XML_ERR_DOCTYPE_NOT_FINISHED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, "DOCTYPE improperly terminated\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErr(ctxt, XML_ERR_DOCTYPE_NOT_FINISHED, NULL); } NEXT; } @@ -6781,12 +6661,8 @@ xmlParseInternalSubset(xmlParserCtxtPtr ctxt) { xmlPopInput(ctxt); if ((CUR_PTR == check) && (cons == ctxt->input->consumed)) { - ctxt->errNo = XML_ERR_INTERNAL_ERROR; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, + xmlFatalErr(ctxt, XML_ERR_INTERNAL_ERROR, "xmlParseInternalSubset: error detected in Markup declaration\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; break; } } @@ -6800,11 +6676,7 @@ xmlParseInternalSubset(xmlParserCtxtPtr ctxt) { * We should be at the end of the DOCTYPE declaration. */ if (RAW != '>') { - ctxt->errNo = XML_ERR_DOCTYPE_NOT_FINISHED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, "DOCTYPE improperly terminated\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErr(ctxt, XML_ERR_DOCTYPE_NOT_FINISHED, NULL); } NEXT; } @@ -6851,11 +6723,8 @@ xmlParseAttribute(xmlParserCtxtPtr ctxt, xmlChar **value) { GROW; name = xmlParseName(ctxt); if (name == NULL) { - ctxt->errNo = XML_ERR_NAME_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, "error parsing attribute name\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "error parsing attribute name\n"); return(NULL); } @@ -6957,12 +6826,8 @@ xmlParseStartTag(xmlParserCtxtPtr ctxt) { name = xmlParseName(ctxt); if (name == NULL) { - ctxt->errNo = XML_ERR_NAME_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, + xmlFatalErrMsg(ctxt, XML_ERR_NAME_REQUIRED, "xmlParseStartTag: invalid element name\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; return(NULL); } @@ -7040,22 +6905,14 @@ failed: if ((RAW == '>') || (((RAW == '/') && (NXT(1) == '>')))) break; if (!IS_BLANK(RAW)) { - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "attributes construct error\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "attributes construct error\n"); } SKIP_BLANKS; if ((cons == ctxt->input->consumed) && (q == CUR_PTR) && (attname == NULL) && (attvalue == NULL)) { - ctxt->errNo = XML_ERR_INTERNAL_ERROR; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "xmlParseStartTag: problem parsing attributes\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_INTERNAL_ERROR, + "xmlParseStartTag: problem parsing attributes\n"); break; } SHRINK; @@ -7103,12 +6960,8 @@ xmlParseEndTag1(xmlParserCtxtPtr ctxt, int line) { GROW; if ((RAW != '<') || (NXT(1) != '/')) { - ctxt->errNo = XML_ERR_LTSLASH_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "xmlParseEndTag: 'wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "xmlParseEndTag: 'sax != NULL) && (ctxt->sax->error != NULL)) { - ctxt->sax->error(ctxt->userData, - "Failed to parse QName '%s'\n", l); - } - ctxt->nsWellFormed = 0; - ctxt->errNo = XML_NS_ERR_QNAME; + xmlNsErr(ctxt, XML_NS_ERR_QNAME, + "Failed to parse QName '%s'\n", l, NULL, NULL); *prefix = NULL; return(l); } @@ -7333,12 +7182,8 @@ xmlParseQName(xmlParserCtxtPtr ctxt, const xmlChar **prefix) { if (l == NULL) { xmlChar *tmp; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) { - ctxt->sax->error(ctxt->userData, - "Failed to parse QName '%s:'\n", p); - } - ctxt->nsWellFormed = 0; - ctxt->errNo = XML_NS_ERR_QNAME; + xmlNsErr(ctxt, XML_NS_ERR_QNAME, + "Failed to parse QName '%s:'\n", p, NULL, NULL); tmp = xmlBuildQName(BAD_CAST "", p, NULL, 0); p = xmlDictLookup(ctxt->dict, tmp, -1); if (tmp != NULL) xmlFree(tmp); @@ -7348,12 +7193,8 @@ xmlParseQName(xmlParserCtxtPtr ctxt, const xmlChar **prefix) { if (CUR == ':') { xmlChar *tmp; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) { - ctxt->sax->error(ctxt->userData, - "Failed to parse QName '%s:%s:'\n", p, l); - } - ctxt->nsWellFormed = 0; - ctxt->errNo = XML_NS_ERR_QNAME; + xmlNsErr(ctxt, XML_NS_ERR_QNAME, + "Failed to parse QName '%s:%s:'\n", p, l, NULL); NEXT; tmp = (xmlChar *) xmlParseName(ctxt); if (tmp != NULL) { @@ -7473,13 +7314,7 @@ xmlParseAttValueInternal(xmlParserCtxtPtr ctxt, int *len, int *alloc, GROW; in = (xmlChar *) CUR_PTR; if (*in != '"' && *in != '\'') { - ctxt->errNo = XML_ERR_ATTRIBUTE_NOT_STARTED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "AttValue: \" or ' expected\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) - ctxt->disableSAX = 1; + xmlFatalErr(ctxt, XML_ERR_ATTRIBUTE_NOT_STARTED, NULL); return (NULL); } ctxt->instate = XML_PARSER_ATTRIBUTE_VALUE; @@ -7620,11 +7455,8 @@ xmlParseAttribute2(xmlParserCtxtPtr ctxt, GROW; name = xmlParseQName(ctxt, prefix); if (name == NULL) { - ctxt->errNo = XML_ERR_NAME_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, "error parsing attribute name\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_NAME_REQUIRED, + "error parsing attribute name\n"); return(NULL); } @@ -7761,12 +7593,8 @@ reparse: localname = xmlParseQName(ctxt, &prefix); if (localname == NULL) { - ctxt->errNo = XML_ERR_NAME_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "xmlParseStartTag: invalid element name\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_NAME_REQUIRED, + "StartTag: invalid element name\n"); return(NULL); } @@ -7830,11 +7658,9 @@ reparse: if (attname == ctxt->str_xml) { if (URL != ctxt->str_xml_ns) { - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "xml namespace prefix mapped to wrong URI\n"); - ctxt->nsWellFormed = 0; - ctxt->errNo = XML_NS_ERR_XML_NAMESPACE; + xmlNsErr(ctxt, XML_NS_ERR_XML_NAMESPACE, + "xml namespace prefix mapped to wrong URI\n", + NULL, NULL, NULL); } /* * Do not keep a namespace definition node @@ -7910,22 +7736,14 @@ failed: if ((RAW == '>') || (((RAW == '/') && (NXT(1) == '>')))) break; if (!IS_BLANK(RAW)) { - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "attributes construct error\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "attributes construct error\n"); } SKIP_BLANKS; if ((cons == ctxt->input->consumed) && (q == CUR_PTR) && (attname == NULL) && (attvalue == NULL)) { - ctxt->errNo = XML_ERR_INTERNAL_ERROR; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, + xmlFatalErr(ctxt, XML_ERR_INTERNAL_ERROR, "xmlParseStartTag: problem parsing attributes\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; break; } GROW; @@ -7938,12 +7756,9 @@ failed: for (i = 0; i < nbatts;i += 5) { nsname = xmlGetNamespace(ctxt, atts[i + 1]); if ((atts[i + 1] != NULL) && (nsname == NULL)) { - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, + xmlNsErr(ctxt, XML_NS_ERR_UNDEFINED_NAMESPACE, "Namespace prefix %s for %s on %s is not defined\n", - atts[i + 1], atts[i], localname); - ctxt->nsWellFormed = 0; - ctxt->errNo = XML_NS_ERR_UNDEFINED_NAMESPACE; + atts[i + 1], atts[i], localname); } atts[i + 2] = nsname; /* @@ -7959,11 +7774,9 @@ failed: break; } if ((nsname != NULL) && (atts[j + 2] == nsname)) { - ctxt->sax->error(ctxt->userData, + xmlNsErr(ctxt, XML_NS_ERR_ATTRIBUTE_REDEFINED, "Namespaced Attribute %s in '%s' redefined\n", - atts[i], nsname); - ctxt->nsWellFormed = 0; - ctxt->errNo = XML_NS_ERR_ATTRIBUTE_REDEFINED; + atts[i], nsname, NULL); break; } } @@ -8048,11 +7861,9 @@ failed: nsname = xmlGetNamespace(ctxt, prefix); if ((prefix != NULL) && (nsname == NULL)) { - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "Namespace prefix %s on %s is not defined\n", prefix, localname); - ctxt->nsWellFormed = 0; - ctxt->errNo = XML_NS_ERR_UNDEFINED_NAMESPACE; + xmlNsErr(ctxt, XML_NS_ERR_UNDEFINED_NAMESPACE, + "Namespace prefix %s on %s is not defined\n", + prefix, localname, NULL); } *pref = prefix; *URI = nsname; @@ -8120,12 +7931,7 @@ xmlParseEndTag2(xmlParserCtxtPtr ctxt, const xmlChar *prefix, GROW; if ((RAW != '<') || (NXT(1) != '/')) { - ctxt->errNo = XML_ERR_LTSLASH_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "xmlParseEndTag: 'wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErr(ctxt, XML_ERR_LTSLASH_REQUIRED, NULL); return; } SKIP(2); @@ -8877,11 +8683,8 @@ xmlParseXMLDecl(xmlParserCtxtPtr ctxt) { SKIP(5); if (!IS_BLANK(RAW)) { - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, "Blank needed after 'wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, + "Blank needed after 'sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "Malformed declaration expecting version\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErr(ctxt, XML_ERR_VERSION_MISSING, NULL); } else { if (!xmlStrEqual(version, (const xmlChar *) XML_DEFAULT_VERSION)) { /* @@ -8917,11 +8716,7 @@ xmlParseXMLDecl(xmlParserCtxtPtr ctxt) { SKIP(2); return; } - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, "Blank needed here\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, "Blank needed here\n"); } xmlParseEncodingDecl(ctxt); if (ctxt->errNo == XML_ERR_UNSUPPORTED_ENCODING) { @@ -8939,11 +8734,7 @@ xmlParseXMLDecl(xmlParserCtxtPtr ctxt) { SKIP(2); return; } - ctxt->errNo = XML_ERR_SPACE_REQUIRED; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, "Blank needed here\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; + xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED, "Blank needed here\n"); } SKIP_BLANKS; ctxt->input->standalone = xmlParseSDDecl(ctxt); @@ -9112,13 +8903,8 @@ xmlParseDocument(xmlParserCtxtPtr ctxt) { */ GROW; if (RAW != '<') { - ctxt->errNo = XML_ERR_DOCUMENT_EMPTY; - if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) - ctxt->sax->error(ctxt->userData, - "Start tag expected, '<' not found\n"); - ctxt->wellFormed = 0; - if (ctxt->recovery == 0) ctxt->disableSAX = 1; - ctxt->instate = XML_PARSER_EOF; + xmlFatalErrMsg(ctxt, XML_ERR_DOCUMENT_EMPTY, + "Start tag expected, '<' not found\n"); } else { ctxt->instate = XML_PARSER_CONTENT; xmlParseElement(ctxt); diff --git a/parserInternals.c b/parserInternals.c index dc06bb19..7c9e471f 100644 --- a/parserInternals.c +++ b/parserInternals.c @@ -1973,6 +1973,7 @@ xmlFreeInputStream(xmlParserInputPtr input) { xmlParserInputPtr xmlNewInputStream(xmlParserCtxtPtr ctxt) { xmlParserInputPtr input; + static int id = 0; input = (xmlParserInputPtr) xmlMalloc(sizeof(xmlParserInput)); if (input == NULL) { @@ -1989,6 +1990,11 @@ xmlNewInputStream(xmlParserCtxtPtr ctxt) { input->line = 1; input->col = 1; input->standalone = -1; + /* + * we don't care about thread reentrancy unicity for a single + * parser context (and hence thread) is sufficient. + */ + input->id = id++; return(input); } diff --git a/python/libxml2class.txt b/python/libxml2class.txt index aa80acc3..6a77cd19 100644 --- a/python/libxml2class.txt +++ b/python/libxml2class.txt @@ -573,53 +573,41 @@ Class xmlDoc(xmlNode) # functions from module xpointer xpointerNewContext() +Class xpathContext() + # accessors + contextDoc() + contextNode() + contextPosition() + contextSize() + function() + functionURI() + setContextDoc() + setContextNode() + + # functions from module python + registerXPathFunction() + + # functions from module xpath + xpathEval() + xpathEvalExpression() + xpathFreeContext() + + # functions from module xpathInternals + xpathNewParserContext() + xpathNsLookup() + xpathRegisterAllFunctions() + xpathRegisterNs() + xpathRegisteredFuncsCleanup() + xpathRegisteredNsCleanup() + xpathRegisteredVariablesCleanup() + xpathVariableLookup() + xpathVariableLookupNS() + + # functions from module xpointer + xpointerEval() Class xmlAttribute(xmlNode) -Class xmlTextReaderLocator() - - # functions from module xmlreader - BaseURI() - LineNumber() - - -Class xmlNs(xmlNode) - - # functions from module tree - copyNamespace() - copyNamespaceList() - freeNs() - freeNsList() - newChild() - newDocNode() - newDocNodeEatName() - newDocRawNode() - newNodeEatName() - newNsProp() - newNsPropEatName() - newTextChild() - setNs() - setNsProp() - unsetNsProp() - - # functions from module xpathInternals - xpathNodeSetFreeNs() - - -Class xmlDtd(xmlNode) - - # functions from module debugXML - debugDumpDTD() - - # functions from module tree - copyDtd() - freeDtd() - - # functions from module valid - dtdAttrDesc() - dtdElementDesc() - dtdQAttrDesc() - dtdQElementDesc() Class catalog() # functions from module catalog @@ -633,6 +621,106 @@ Class catalog() resolvePublic() resolveSystem() resolveURI() + + +Class xmlElement(xmlNode) + + +Class xmlAttr(xmlNode) + + # functions from module debugXML + debugDumpAttr() + debugDumpAttrList() + + # functions from module tree + copyProp() + copyPropList() + freeProp() + freePropList() + removeProp() + + # functions from module valid + removeID() + removeRef() + + +Class xmlTextReader(xmlTextReaderCore) + + # functions from module xmlreader + AttributeCount() + BaseUri() + Close() + CurrentDoc() + CurrentNode() + Depth() + Expand() + GetAttribute() + GetAttributeNo() + GetAttributeNs() + GetParserProp() + GetRemainder() + HasAttributes() + HasValue() + IsDefault() + IsEmptyElement() + IsValid() + LocalName() + LookupNamespace() + MoveToAttribute() + MoveToAttributeNo() + MoveToAttributeNs() + MoveToElement() + MoveToFirstAttribute() + MoveToNextAttribute() + Name() + NamespaceUri() + Next() + NodeType() + Normalization() + Prefix() + QuoteChar() + Read() + ReadAttributeValue() + ReadInnerXml() + ReadOuterXml() + ReadState() + ReadString() + RelaxNGSetSchema() + RelaxNGValidate() + SetParserProp() + Value() + XmlLang() +Class xmlReg() + + # functions from module xmlregexp + regexpExec() + regexpFreeRegexp() + regexpIsDeterminist() + regexpPrint() + + +Class xmlEntity(xmlNode) + + # functions from module parserInternals + handleEntity() +Class relaxNgSchema() + + # functions from module relaxng + relaxNGDump() + relaxNGDumpTree() + relaxNGFree() + relaxNGNewValidCtxt() + + # functions from module xmlreader + RelaxNGSetSchema() +Class relaxNgValidCtxt() + + # functions from module relaxng + relaxNGValidateDoc() + relaxNGValidateFullElement() + relaxNGValidatePopElement() + relaxNGValidatePushCData() + relaxNGValidatePushElement() Class xpathParserContext() # accessors context() @@ -778,6 +866,62 @@ Class parserCtxt(parserCtxtCore) stringLenDecodeEntities() +Class xmlDtd(xmlNode) + + # functions from module debugXML + debugDumpDTD() + + # functions from module tree + copyDtd() + freeDtd() + + # functions from module valid + dtdAttrDesc() + dtdElementDesc() + dtdQAttrDesc() + dtdQElementDesc() + + +Class xmlNs(xmlNode) + + # functions from module tree + copyNamespace() + copyNamespaceList() + freeNs() + freeNsList() + newChild() + newDocNode() + newDocNodeEatName() + newDocRawNode() + newNodeEatName() + newNsProp() + newNsPropEatName() + newTextChild() + setNs() + setNsProp() + unsetNsProp() + + # functions from module xpathInternals + xpathNodeSetFreeNs() + + +Class inputBuffer(ioReadWrapper) + + # functions from module xmlIO + freeParserInputBuffer() + grow() + push() + read() + + # functions from module xmlreader + newTextReader() +Class relaxNgParserCtxt() + + # functions from module relaxng + relaxNGFreeParserCtxt() + relaxNGParse() + + Class outputBuffer(ioWriteWrapper) # functions from module HTMLtree @@ -796,98 +940,11 @@ Class outputBuffer(ioWriteWrapper) flush() write() writeString() - - -Class xmlElement(xmlNode) -Class relaxNgSchema() - - # functions from module relaxng - relaxNGDump() - relaxNGDumpTree() - relaxNGFree() - relaxNGNewValidCtxt() +Class xmlTextReaderLocator() # functions from module xmlreader - RelaxNGSetSchema() - - -Class xmlEntity(xmlNode) - - # functions from module parserInternals - handleEntity() - - -Class xmlTextReader(xmlTextReaderCore) - - # functions from module xmlreader - AttributeCount() - BaseUri() - Close() - CurrentDoc() - CurrentNode() - Depth() - Expand() - GetAttribute() - GetAttributeNo() - GetAttributeNs() - GetParserProp() - GetRemainder() - HasAttributes() - HasValue() - IsDefault() - IsEmptyElement() - IsValid() - LocalName() - LookupNamespace() - MoveToAttribute() - MoveToAttributeNo() - MoveToAttributeNs() - MoveToElement() - MoveToFirstAttribute() - MoveToNextAttribute() - Name() - NamespaceUri() - Next() - NodeType() - Normalization() - Prefix() - QuoteChar() - Read() - ReadAttributeValue() - ReadInnerXml() - ReadOuterXml() - ReadState() - ReadString() - RelaxNGSetSchema() - RelaxNGValidate() - SetParserProp() - Value() - XmlLang() - - -Class xmlAttr(xmlNode) - - # functions from module debugXML - debugDumpAttr() - debugDumpAttrList() - - # functions from module tree - copyProp() - copyPropList() - freeProp() - freePropList() - removeProp() - - # functions from module valid - removeID() - removeRef() -Class xmlReg() - - # functions from module xmlregexp - regexpExec() - regexpFreeRegexp() - regexpIsDeterminist() - regexpPrint() + BaseURI() + LineNumber() Class URI() # accessors authority() @@ -914,60 +971,3 @@ Class URI() parseURIReference() printURI() saveUri() -Class relaxNgParserCtxt() - - # functions from module relaxng - relaxNGFreeParserCtxt() - relaxNGParse() -Class xpathContext() - # accessors - contextDoc() - contextNode() - contextPosition() - contextSize() - function() - functionURI() - setContextDoc() - setContextNode() - - # functions from module python - registerXPathFunction() - - # functions from module xpath - xpathEval() - xpathEvalExpression() - xpathFreeContext() - - # functions from module xpathInternals - xpathNewParserContext() - xpathNsLookup() - xpathRegisterAllFunctions() - xpathRegisterNs() - xpathRegisteredFuncsCleanup() - xpathRegisteredNsCleanup() - xpathRegisteredVariablesCleanup() - xpathVariableLookup() - xpathVariableLookupNS() - - # functions from module xpointer - xpointerEval() - - -Class inputBuffer(ioReadWrapper) - - # functions from module xmlIO - freeParserInputBuffer() - grow() - push() - read() - - # functions from module xmlreader - newTextReader() -Class relaxNgValidCtxt() - - # functions from module relaxng - relaxNGValidateDoc() - relaxNGValidateFullElement() - relaxNGValidatePopElement() - relaxNGValidatePushCData() - relaxNGValidatePushElement() diff --git a/result/VC/PENesting b/result/VC/PENesting index 28a09962..627ac317 100644 --- a/result/VC/PENesting +++ b/result/VC/PENesting @@ -1,4 +1,4 @@ -./test/VC/PENesting:1: error: xmlParseStartTag: invalid element name +./test/VC/PENesting:1: error: StartTag: invalid element name "> ^ ./test/VC/PENesting:1: error: Extra content at the end of the document diff --git a/result/VC/PENesting2 b/result/VC/PENesting2 index 5162e40b..3a98366b 100644 --- a/result/VC/PENesting2 +++ b/result/VC/PENesting2 @@ -1,4 +1,4 @@ -./test/VC/PENesting2:1: error: xmlParseStartTag: invalid element name +./test/VC/PENesting2:1: error: StartTag: invalid element name ^ ./test/VC/PENesting2:1: error: Extra content at the end of the document diff --git a/result/valid/t4.dtd.err b/result/valid/t4.dtd.err index e8705986..9705f10a 100644 --- a/result/valid/t4.dtd.err +++ b/result/valid/t4.dtd.err @@ -1,4 +1,4 @@ -./test/valid/t4.dtd:1: error: xmlParseStartTag: invalid element name +./test/valid/t4.dtd:1: error: StartTag: invalid element name ^ ./test/valid/t4.dtd:1: error: Extra content at the end of the document diff --git a/result/valid/t4a.dtd.err b/result/valid/t4a.dtd.err index 209ad9f9..65546d6d 100644 --- a/result/valid/t4a.dtd.err +++ b/result/valid/t4a.dtd.err @@ -1,4 +1,4 @@ -./test/valid/t4a.dtd:1: error: xmlParseStartTag: invalid element name +./test/valid/t4a.dtd:1: error: StartTag: invalid element name ^ ./test/valid/t4a.dtd:1: error: Extra content at the end of the document diff --git a/result/valid/t6.dtd.err b/result/valid/t6.dtd.err index c7e3892a..29b171a2 100644 --- a/result/valid/t6.dtd.err +++ b/result/valid/t6.dtd.err @@ -1,4 +1,4 @@ -./test/valid/t6.dtd:1: error: xmlParseStartTag: invalid element name +./test/valid/t6.dtd:1: error: StartTag: invalid element name ^ ./test/valid/t6.dtd:1: error: Extra content at the end of the document diff --git a/result/valid/t8.xml.err b/result/valid/t8.xml.err index dd14a0ff..63197829 100644 --- a/result/valid/t8.xml.err +++ b/result/valid/t8.xml.err @@ -1,4 +1,4 @@ -Entity: line 1: error: xmlParseInternalSubset: error detected in Markup declaration +Entity: line 1: error: internal error: xmlParseInternalSubset: error detected in Markup declaration %defroot; ^ Entity: line 1: diff --git a/result/valid/t8a.xml.err b/result/valid/t8a.xml.err index dd14a0ff..63197829 100644 --- a/result/valid/t8a.xml.err +++ b/result/valid/t8a.xml.err @@ -1,4 +1,4 @@ -Entity: line 1: error: xmlParseInternalSubset: error detected in Markup declaration +Entity: line 1: error: internal error: xmlParseInternalSubset: error detected in Markup declaration %defroot; ^ Entity: line 1: diff --git a/tree.c b/tree.c index b3eea54e..40764b48 100644 --- a/tree.c +++ b/tree.c @@ -5303,8 +5303,8 @@ xmlSearchNs(xmlDocPtr doc, xmlNodePtr node, const xmlChar *nameSpace) { * Returns 1 if true, 0 if false and -1 in case of error. */ static int -xmlNsInScope(xmlDocPtr doc, xmlNodePtr node, xmlNodePtr ancestor, - const xmlChar * prefix) +xmlNsInScope(xmlDocPtr doc ATTRIBUTE_UNUSED, xmlNodePtr node, + xmlNodePtr ancestor, const xmlChar * prefix) { xmlNsPtr tst;