[libxslt] Make sure that XSLT_STATE_STOPPED isn't overwritten
- From: Nick Wellnhofer <nwellnhof src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libxslt] Make sure that XSLT_STATE_STOPPED isn't overwritten
- Date: Tue, 21 Jun 2016 12:21:16 +0000 (UTC)
commit 91789dba139f69937514466bbe8891b46931b450
Author: Nick Wellnhofer <wellnhofer aevum de>
Date: Fri Jun 3 17:33:55 2016 +0200
Make sure that XSLT_STATE_STOPPED isn't overwritten
Overwriting XSLT_STATE_STOPPED with XSLT_STATE_ERROR makes the
transform continue. This is not what we want.
libxslt/transform.c | 1 -
libxslt/xslt.c | 6 ++----
libxslt/xsltutils.c | 9 +++++----
3 files changed, 7 insertions(+), 9 deletions(-)
---
diff --git a/libxslt/transform.c b/libxslt/transform.c
index c89f20e..f0e168c 100644
--- a/libxslt/transform.c
+++ b/libxslt/transform.c
@@ -3814,7 +3814,6 @@ xsltDocumentElem(xsltTransformContextPtr ctxt, xmlNodePtr node,
xsltTransformError(ctxt, NULL, inst,
"xsltDocumentElem: unable to save to %s\n",
filename);
- ctxt->state = XSLT_STATE_ERROR;
#ifdef WITH_XSLT_DEBUG_EXTRA
} else {
xsltGenericDebug(xsltGenericDebugContext,
diff --git a/libxslt/xslt.c b/libxslt/xslt.c
index bca91ee..22283df 100644
--- a/libxslt/xslt.c
+++ b/libxslt/xslt.c
@@ -810,9 +810,8 @@ xsltAllocateExtraCtxt(xsltTransformContextPtr ctxt)
ctxt->extras = (xsltRuntimeExtraPtr)
xmlMalloc(ctxt->extrasMax * sizeof(xsltRuntimeExtra));
if (ctxt->extras == NULL) {
- xmlGenericError(xmlGenericErrorContext,
+ xsltTransformError(ctxt, NULL, NULL,
"xsltAllocateExtraCtxt: out of memory\n");
- ctxt->state = XSLT_STATE_ERROR;
return(0);
}
for (i = 0;i < ctxt->extrasMax;i++) {
@@ -828,9 +827,8 @@ xsltAllocateExtraCtxt(xsltTransformContextPtr ctxt)
tmp = (xsltRuntimeExtraPtr) xmlRealloc(ctxt->extras,
ctxt->extrasMax * sizeof(xsltRuntimeExtra));
if (tmp == NULL) {
- xmlGenericError(xmlGenericErrorContext,
+ xsltTransformError(ctxt, NULL, NULL,
"xsltAllocateExtraCtxt: out of memory\n");
- ctxt->state = XSLT_STATE_ERROR;
return(0);
}
ctxt->extras = tmp;
diff --git a/libxslt/xsltutils.c b/libxslt/xsltutils.c
index 1646c44..c250ccf 100644
--- a/libxslt/xsltutils.c
+++ b/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;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]