Index: third_party/libxml/src/error.c |
diff --git a/third_party/libxml/src/error.c b/third_party/libxml/src/error.c |
index 7508d41b074b488447ab474cdf2607e3938a2d9c..cbcf5c9633535454af06cad22c96a4c4025ac6ed 100644 |
--- a/third_party/libxml/src/error.c |
+++ b/third_party/libxml/src/error.c |
@@ -33,7 +33,7 @@ void XMLCDECL xmlGenericErrorDefaultFunc (void *ctx ATTRIBUTE_UNUSED, |
\ |
while (size < 64000) { \ |
va_start(ap, msg); \ |
- chars = vsnprintf(str, size, msg, ap); \ |
+ chars = vsnprintf(str, size, msg, ap); \ |
va_end(ap); \ |
if ((chars > -1) && (chars < size)) { \ |
if (prev_size == chars) { \ |
@@ -54,9 +54,9 @@ void XMLCDECL xmlGenericErrorDefaultFunc (void *ctx ATTRIBUTE_UNUSED, |
} |
/************************************************************************ |
- * * |
- * Handling of out of context errors * |
- * * |
+ * * |
+ * Handling of out of context errors * |
+ * * |
************************************************************************/ |
/** |
@@ -64,7 +64,7 @@ void XMLCDECL xmlGenericErrorDefaultFunc (void *ctx ATTRIBUTE_UNUSED, |
* @ctx: an error context |
* @msg: the message to display/transmit |
* @...: extra parameters for the message display |
- * |
+ * |
* Default handler for out of context error messages. |
*/ |
void XMLCDECL |
@@ -82,7 +82,7 @@ xmlGenericErrorDefaultFunc(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { |
/** |
* initGenericErrorDefaultFunc: |
* @handler: the handler |
- * |
+ * |
* Set or reset (if NULL) the default handler for generic errors |
* to the builtin error function. |
*/ |
@@ -137,15 +137,15 @@ xmlSetStructuredErrorFunc(void *ctx, xmlStructuredErrorFunc handler) { |
} |
/************************************************************************ |
- * * |
- * Handling of parsing errors * |
- * * |
+ * * |
+ * Handling of parsing errors * |
+ * * |
************************************************************************/ |
/** |
* xmlParserPrintFileInfo: |
* @input: an xmlParserInputPtr input |
- * |
+ * |
* Displays the associated file and line informations for the current input |
*/ |
@@ -165,12 +165,12 @@ xmlParserPrintFileInfo(xmlParserInputPtr input) { |
/** |
* xmlParserPrintFileContext: |
* @input: an xmlParserInputPtr input |
- * |
+ * |
* Displays current context within the input content for error tracking |
*/ |
static void |
-xmlParserPrintFileContextInternal(xmlParserInputPtr input , |
+xmlParserPrintFileContextInternal(xmlParserInputPtr input , |
xmlGenericErrorFunc channel, void *data ) { |
const xmlChar *cur, *base; |
unsigned int n, col; /* GCC warns if signed, because compared with sizeof() */ |
@@ -186,8 +186,8 @@ xmlParserPrintFileContextInternal(xmlParserInputPtr input , |
} |
n = 0; |
/* search backwards for beginning-of-line (to max buff size) */ |
- while ((n++ < (sizeof(content)-1)) && (cur > base) && |
- (*(cur) != '\n') && (*(cur) != '\r')) |
+ while ((n++ < (sizeof(content)-1)) && (cur > base) && |
+ (*(cur) != '\n') && (*(cur) != '\r')) |
cur--; |
if ((*(cur) == '\n') || (*(cur) == '\r')) cur++; |
/* calculate the error position in terms of the current position */ |
@@ -196,8 +196,8 @@ xmlParserPrintFileContextInternal(xmlParserInputPtr input , |
n = 0; |
ctnt = content; |
/* copy selected text to our buffer */ |
- while ((*cur != 0) && (*(cur) != '\n') && |
- (*(cur) != '\r') && (n < sizeof(content)-1)) { |
+ while ((*cur != 0) && (*(cur) != '\n') && |
+ (*(cur) != '\r') && (n < sizeof(content)-1)) { |
*ctnt++ = *cur++; |
n++; |
} |
@@ -221,7 +221,7 @@ xmlParserPrintFileContextInternal(xmlParserInputPtr input , |
/** |
* xmlParserPrintFileContext: |
* @input: an xmlParserInputPtr input |
- * |
+ * |
* Displays current context within the input content for error tracking |
*/ |
void |
@@ -292,7 +292,10 @@ xmlReportError(xmlErrorPtr err, xmlParserCtxtPtr ctxt, const char *str, |
} else { |
if (file != NULL) |
channel(data, "%s:%d: ", file, line); |
- else if ((line != 0) && (domain == XML_FROM_PARSER)) |
+ else if ((line != 0) && |
+ ((domain == XML_FROM_PARSER) || (domain == XML_FROM_SCHEMASV)|| |
+ (domain == XML_FROM_SCHEMASP)||(domain == XML_FROM_DTD) || |
+ (domain == XML_FROM_RELAXNGP)||(domain == XML_FROM_RELAXNGV))) |
channel(data, "Entity: line %d: ", line); |
} |
if (name != NULL) { |
@@ -360,6 +363,15 @@ xmlReportError(xmlErrorPtr err, xmlParserCtxtPtr ctxt, const char *str, |
case XML_FROM_I18N: |
channel(data, "encoding "); |
break; |
+ case XML_FROM_SCHEMATRONV: |
+ channel(data, "schematron "); |
+ break; |
+ case XML_FROM_BUFFER: |
+ channel(data, "internal buffer "); |
+ break; |
+ case XML_FROM_URI: |
+ channel(data, "URI "); |
+ break; |
default: |
break; |
} |
@@ -429,7 +441,7 @@ xmlReportError(xmlErrorPtr err, xmlParserCtxtPtr ctxt, const char *str, |
* @str2: extra string info |
* @str3: extra string info |
* @int1: extra int info |
- * @col: column number of the error or 0 if N/A |
+ * @col: column number of the error or 0 if N/A |
* @msg: the message to display/transmit |
* @...: extra parameters for the message display |
* |
@@ -452,6 +464,8 @@ __xmlRaiseError(xmlStructuredErrorFunc schannel, |
xmlErrorPtr to = &xmlLastError; |
xmlNodePtr baseptr = NULL; |
+ if (code == XML_ERR_OK) |
+ return; |
if ((xmlGetWarningsDefaultValue == 0) && (level == XML_ERR_WARNING)) |
return; |
if ((domain == XML_FROM_PARSER) || (domain == XML_FROM_HTML) || |
@@ -459,8 +473,11 @@ __xmlRaiseError(xmlStructuredErrorFunc schannel, |
(domain == XML_FROM_IO) || (domain == XML_FROM_VALID)) { |
ctxt = (xmlParserCtxtPtr) ctx; |
if ((schannel == NULL) && (ctxt != NULL) && (ctxt->sax != NULL) && |
- (ctxt->sax->initialized == XML_SAX2_MAGIC)) |
+ (ctxt->sax->initialized == XML_SAX2_MAGIC) && |
+ (ctxt->sax->serror != NULL)) { |
schannel = ctxt->sax->serror; |
+ data = ctxt->userData; |
+ } |
} |
/* |
* Check if structured error handler set |
@@ -473,16 +490,6 @@ __xmlRaiseError(xmlStructuredErrorFunc schannel, |
if (schannel != NULL) |
data = xmlStructuredErrorContext; |
} |
- if ((domain == XML_FROM_VALID) && |
- ((channel == xmlParserValidityError) || |
- (channel == xmlParserValidityWarning))) { |
- ctxt = (xmlParserCtxtPtr) ctx; |
- if ((schannel == NULL) && (ctxt != NULL) && (ctxt->sax != NULL) && |
- (ctxt->sax->initialized == XML_SAX2_MAGIC)) |
- schannel = ctxt->sax->serror; |
- } |
- if (code == XML_ERR_OK) |
- return; |
/* |
* Formatting the message |
*/ |
@@ -526,6 +533,8 @@ __xmlRaiseError(xmlStructuredErrorFunc schannel, |
if ((node != NULL) && (node->type == XML_ELEMENT_NODE)) |
line = node->line; |
+ if ((line == 0) || (line == 65535)) |
+ line = xmlGetLineNo(node); |
} |
/* |
@@ -589,6 +598,11 @@ __xmlRaiseError(xmlStructuredErrorFunc schannel, |
if (to != &xmlLastError) |
xmlCopyError(to,&xmlLastError); |
+ if (schannel != NULL) { |
+ schannel(data, to); |
+ return; |
+ } |
+ |
/* |
* Find the callback channel if channel param is NULL |
*/ |
@@ -600,20 +614,13 @@ __xmlRaiseError(xmlStructuredErrorFunc schannel, |
channel = ctxt->sax->error; |
data = ctxt->userData; |
} else if (channel == NULL) { |
- if ((schannel == NULL) && (xmlStructuredError != NULL)) { |
- schannel = xmlStructuredError; |
- data = xmlStructuredErrorContext; |
+ channel = xmlGenericError; |
+ if (ctxt != NULL) { |
+ data = ctxt; |
} else { |
- channel = xmlGenericError; |
- if (!data) { |
- data = xmlGenericErrorContext; |
- } |
+ data = xmlGenericErrorContext; |
} |
} |
- if (schannel != NULL) { |
- schannel(data, to); |
- return; |
- } |
if (channel == NULL) |
return; |
@@ -664,7 +671,7 @@ __xmlSimpleError(int domain, int code, xmlNodePtr node, |
* @ctx: an XML parser context |
* @msg: the message to display/transmit |
* @...: extra parameters for the message display |
- * |
+ * |
* Display and format an error messages, gives file, line, position and |
* extra parameters. |
*/ |
@@ -707,7 +714,7 @@ xmlParserError(void *ctx, const char *msg, ...) |
* @ctx: an XML parser context |
* @msg: the message to display/transmit |
* @...: extra parameters for the message display |
- * |
+ * |
* Display and format a warning messages, gives file, line, position and |
* extra parameters. |
*/ |
@@ -728,7 +735,7 @@ xmlParserWarning(void *ctx, const char *msg, ...) |
} |
xmlParserPrintFileInfo(input); |
} |
- |
+ |
xmlGenericError(xmlGenericErrorContext, "warning: "); |
XML_GET_VAR_STR(msg, str); |
xmlGenericError(xmlGenericErrorContext, "%s", str); |
@@ -746,9 +753,9 @@ xmlParserWarning(void *ctx, const char *msg, ...) |
} |
/************************************************************************ |
- * * |
- * Handling of validation errors * |
- * * |
+ * * |
+ * Handling of validation errors * |
+ * * |
************************************************************************/ |
/** |
@@ -756,7 +763,7 @@ xmlParserWarning(void *ctx, const char *msg, ...) |
* @ctx: an XML parser context |
* @msg: the message to display/transmit |
* @...: extra parameters for the message display |
- * |
+ * |
* Display and format an validity error messages, gives file, |
* line, position and extra parameters. |
*/ |
@@ -774,7 +781,7 @@ xmlParserValidityError(void *ctx, const char *msg, ...) |
input = ctxt->input; |
if ((input->filename == NULL) && (ctxt->inputNr > 1)) |
input = ctxt->inputTab[ctxt->inputNr - 2]; |
- |
+ |
if (had_info == 0) { |
xmlParserPrintFileInfo(input); |
} |
@@ -800,7 +807,7 @@ xmlParserValidityError(void *ctx, const char *msg, ...) |
* @ctx: an XML parser context |
* @msg: the message to display/transmit |
* @...: extra parameters for the message display |
- * |
+ * |
* Display and format a validity warning messages, gives file, line, |
* position and extra parameters. |
*/ |
@@ -819,7 +826,7 @@ xmlParserValidityWarning(void *ctx, const char *msg, ...) |
xmlParserPrintFileInfo(input); |
} |
- |
+ |
xmlGenericError(xmlGenericErrorContext, "validity warning: "); |
XML_GET_VAR_STR(msg, str); |
xmlGenericError(xmlGenericErrorContext, "%s", str); |