Index: third_party/libxslt/libexslt/functions.c |
diff --git a/third_party/libxslt/libexslt/functions.c b/third_party/libxslt/libexslt/functions.c |
index 13fd06ee1df43eb380766ac3c5ee571e9692bb44..e6e245fd18fa2df6c81d804425d8fa9709d2d033 100644 |
--- a/third_party/libxslt/libexslt/functions.c |
+++ b/third_party/libxslt/libexslt/functions.c |
@@ -106,16 +106,16 @@ exsltFuncRegisterImportFunc (exsltFuncFunctionData *data, |
return; |
if (ch->ctxt == NULL || ch->hash == NULL) |
- return; |
+ return; |
/* Check if already present */ |
func = (exsltFuncFunctionData*)xmlHashLookup2(ch->hash, URI, name); |
if (func == NULL) { /* Not yet present - copy it in */ |
- func = exsltFuncNewFunctionData(); |
+ func = exsltFuncNewFunctionData(); |
memcpy(func, data, sizeof(exsltFuncFunctionData)); |
if (xmlHashAddEntry2(ch->hash, URI, name, func) < 0) { |
xsltGenericError(xsltGenericErrorContext, |
- "Failed to register function {%s}%s\n", |
+ "Failed to register function {%s}%s\n", |
URI, name); |
} else { /* Do the registration */ |
xsltGenericDebug(xsltGenericDebugContext, |
@@ -146,7 +146,7 @@ exsltFuncInit (xsltTransformContextPtr ctxt, const xmlChar *URI) { |
xsltStylesheetPtr tmp; |
exsltFuncImportRegData ch; |
xmlHashTablePtr hash; |
- |
+ |
ret = (exsltFuncData *) xmlMalloc (sizeof(exsltFuncData)); |
if (ret == NULL) { |
xsltGenericError(xsltGenericErrorContext, |
@@ -166,7 +166,7 @@ exsltFuncInit (xsltTransformContextPtr ctxt, const xmlChar *URI) { |
while ((tmp=xsltNextImport(tmp))!=NULL) { |
hash = xsltGetExtInfo(tmp, URI); |
if (hash != NULL) { |
- xmlHashScanFull(hash, |
+ xmlHashScanFull(hash, |
(xmlHashScannerFull) exsltFuncRegisterImportFunc, &ch); |
} |
} |
@@ -179,7 +179,7 @@ exsltFuncInit (xsltTransformContextPtr ctxt, const xmlChar *URI) { |
* @ctxt: an XSLT transformation context |
* @URI: the namespace URI for the extension |
* @data: the module data to free up |
- * |
+ * |
* Shutdown the EXSLT - Functions module |
* Called at transformation-time. |
*/ |
@@ -212,7 +212,7 @@ exsltFuncStyleInit (xsltStylesheetPtr style ATTRIBUTE_UNUSED, |
* exsltFuncStyleShutdown: |
* @style: an XSLT stylesheet |
* @URI: the namespace URI for the extension |
- * @data: the stylesheet data to free up |
+ * @data: the stylesheet data to free up |
* |
* Shutdown the EXSLT - Function module |
* Called at compile-time. |
@@ -350,7 +350,7 @@ exsltFuncFunctionFunction (xmlXPathParserContextPtr ctxt, int nargs) { |
* which is not very nice. There is probably a much better solution |
* (like change other code to delay the evaluation). |
*/ |
- /* |
+ /* |
* In order to give the function params and variables a new 'scope' |
* we change varsBase in the context. |
*/ |
@@ -411,7 +411,7 @@ exsltFuncFunctionFunction (xmlXPathParserContextPtr ctxt, int nargs) { |
tctxt->insert = oldInsert; |
tctxt->varsBase = oldBase; /* restore original scope */ |
if (params != NULL) |
- xsltFreeStackElemList(params); |
+ xsltFreeStackElemList(params); |
if (data->error != 0) |
goto error; |
@@ -459,10 +459,9 @@ exsltFuncFunctionComp (xsltStylesheetPtr style, xmlNodePtr inst) { |
xmlHashTablePtr data; |
exsltFuncFunctionData *func; |
- if ((style == NULL) || (inst == NULL)) |
+ if ((style == NULL) || (inst == NULL) || (inst->type != XML_ELEMENT_NODE)) |
return; |
- |
{ |
xmlChar *qname; |
@@ -489,6 +488,8 @@ exsltFuncFunctionComp (xsltStylesheetPtr style, xmlNodePtr inst) { |
} |
xmlFree(prefix); |
+ xsltParseTemplateContent(style, inst); |
+ |
/* |
* Create function data |
*/ |
@@ -500,8 +501,6 @@ exsltFuncFunctionComp (xsltStylesheetPtr style, xmlNodePtr inst) { |
func->nargs++; |
} |
- xsltParseTemplateContent(style, inst); |
- |
/* |
* Register the function data such that it can be retrieved |
* by exslFuncFunctionFunction |
@@ -546,6 +545,9 @@ exsltFuncResultComp (xsltStylesheetPtr style, xmlNodePtr inst, |
xmlChar *sel; |
exsltFuncResultPreComp *ret; |
+ if ((style == NULL) || (inst == NULL) || (inst->type != XML_ELEMENT_NODE)) |
+ return (NULL); |
+ |
/* |
* "Validity" checking |
*/ |
@@ -560,6 +562,7 @@ exsltFuncResultComp (xsltStylesheetPtr style, xmlNodePtr inst, |
xsltGenericError(xsltGenericErrorContext, |
"exsltFuncResultElem: only xsl:fallback is " |
"allowed to follow func:result\n"); |
+ style->errors++; |
return (NULL); |
} |
/* it is an error for a func:result element to not be a descendant |
@@ -567,7 +570,7 @@ exsltFuncResultComp (xsltStylesheetPtr style, xmlNodePtr inst, |
* it is an error if a func:result occurs within a func:result |
* element. |
* it is an error if instanciating the content of a variable |
- * binding element (i.e. xsl:variable, xsl:param) results in the |
+ * binding element (i.e. xsl:variable, xsl:param) results in the |
* instanciation of a func:result element. |
*/ |
for (test = inst->parent; test != NULL; test = test->parent) { |
@@ -576,6 +579,7 @@ exsltFuncResultComp (xsltStylesheetPtr style, xmlNodePtr inst, |
xsltGenericError(xsltGenericErrorContext, |
"func:result element not a descendant " |
"of a func:function\n"); |
+ style->errors++; |
return (NULL); |
} |
if ((test->ns != NULL) && |
@@ -587,6 +591,7 @@ exsltFuncResultComp (xsltStylesheetPtr style, xmlNodePtr inst, |
xsltGenericError(xsltGenericErrorContext, |
"func:result element not allowed within" |
" another func:result element\n"); |
+ style->errors++; |
return (NULL); |
} |
} |
@@ -596,6 +601,7 @@ exsltFuncResultComp (xsltStylesheetPtr style, xmlNodePtr inst, |
xsltGenericError(xsltGenericErrorContext, |
"func:result element not allowed within" |
" a variable binding element\n"); |
+ style->errors++; |
return (NULL); |
} |
} |
@@ -609,6 +615,7 @@ exsltFuncResultComp (xsltStylesheetPtr style, xmlNodePtr inst, |
xsltPrintErrorContext(NULL, NULL, NULL); |
xsltGenericError(xsltGenericErrorContext, |
"exsltFuncResultComp : malloc failed\n"); |
+ style->errors++; |
return (NULL); |
} |
memset(ret, 0, sizeof(exsltFuncResultPreComp)); |
@@ -644,7 +651,7 @@ exsltFuncResultElem (xsltTransformContextPtr ctxt, |
exsltFuncResultPreComp *comp) { |
exsltFuncData *data; |
xmlXPathObjectPtr ret; |
- |
+ |
/* It is an error if instantiating the content of the |
* func:function element results in the instantiation of more than |
@@ -720,7 +727,7 @@ exsltFuncResultElem (xsltTransformContextPtr ctxt, |
data->error = 1; |
return; |
} |
- xsltRegisterLocalRVT(ctxt, container); |
+ xsltRegisterLocalRVT(ctxt, container); |
oldInsert = ctxt->insert; |
ctxt->insert = (xmlNodePtr) container; |