Index: third_party/libxslt/libxslt/xsltutils.c |
diff --git a/third_party/libxslt/libxslt/xsltutils.c b/third_party/libxslt/libxslt/xsltutils.c |
index 1646c44931ed531885ce6f2ae74b314154b36239..c250ccfabb8f34eaff5ed5ce18f509f3062404e8 100644 |
--- a/third_party/libxslt/libxslt/xsltutils.c |
+++ b/third_party/libxslt/libxslt/xsltutils.c |
@@ -457,9 +457,8 @@ xsltMessage(xsltTransformContextPtr ctxt, xmlNodePtr node, xmlNodePtr inst) { |
} else if (xmlStrEqual(prop, (const xmlChar *)"no")) { |
terminate = 0; |
} else { |
- error(errctx, |
+ xsltTransformError(ctxt, NULL, inst, |
"xsl:message : terminate expecting 'yes' or 'no'\n"); |
- ctxt->state = XSLT_STATE_ERROR; |
} |
xmlFree(prop); |
} |
@@ -622,7 +621,8 @@ xsltPrintErrorContext(xsltTransformContextPtr ctxt, |
void *errctx = xsltGenericErrorContext; |
if (ctxt != NULL) { |
- ctxt->state = XSLT_STATE_ERROR; |
+ if (ctxt->state == XSLT_STATE_OK) |
+ ctxt->state = XSLT_STATE_ERROR; |
if (ctxt->error != NULL) { |
error = ctxt->error; |
errctx = ctxt->errctx; |
@@ -715,7 +715,8 @@ xsltTransformError(xsltTransformContextPtr ctxt, |
char * str; |
if (ctxt != NULL) { |
- ctxt->state = XSLT_STATE_ERROR; |
+ if (ctxt->state == XSLT_STATE_OK) |
+ ctxt->state = XSLT_STATE_ERROR; |
if (ctxt->error != NULL) { |
error = ctxt->error; |
errctx = ctxt->errctx; |