From: Thomas Faber Date: Sat, 5 Jan 2019 17:34:29 +0000 (+0100) Subject: [LIBXSLT] Update to version 1.1.33. CORE-15280 X-Git-Tag: 0.4.13-dev~704 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=af4421c39ad43772f26c07c4e35bad7000f1351f [LIBXSLT] Update to version 1.1.33. CORE-15280 --- diff --git a/dll/3rdparty/libxslt/ChangeLog b/dll/3rdparty/libxslt/ChangeLog index 7761eb34d10..c4a442141a8 100644 --- a/dll/3rdparty/libxslt/ChangeLog +++ b/dll/3rdparty/libxslt/ChangeLog @@ -2057,7 +2057,7 @@ Wed Feb 25 16:35:01 CET 2004 Daniel Veillard * libxslt/attributes.c libxslt/keys.h libxslt/preproc.c libxslt/transform.c libxslt/variables.c libxslt/xsltutils.c: First step toward _private cleanup: use the psvi field to store - the precompilation informations in the stylesheet nodes. + the precompilation information in the stylesheet nodes. Wed Feb 25 14:24:34 CET 2004 Daniel Veillard @@ -2402,7 +2402,7 @@ Mon Dec 8 23:34:32 HKT 2003 William Brack Mon Dec 1 16:41:27 CET 2003 Daniel Veillard - * libxslt/*.h *.h.in: updated the metadata informations in the headers + * libxslt/*.h *.h.in: updated the metadata information in the headers * doc/* doc/html/*: regenerated the docs. Sun Nov 30 23:25:22 HKT 2003 William Brack @@ -3614,14 +3614,14 @@ Tue Nov 26 16:02:38 CET 2002 Daniel Veillard Tue Nov 26 15:17:13 CET 2002 Daniel Veillard * libxslt/xsltutils.c libxslt/xsltutils.h: added the function - xsltGetProfileInformation() to retrieve profiling informations + xsltGetProfileInformation() to retrieve profiling information from an XSLT transformation context. It returns it as an XML tree. Provided by Michael Rothwell this closes RFE #99527 Tue Nov 26 14:40:45 CET 2002 Daniel Veillard * libxslt/imports.c: apply patch from Daniel Stodden, a bug - in xsltFindElemSpaceHandling() missing imported informations + in xsltFindElemSpaceHandling() missing imported information * tests/REC/stand-2.7-1.stand.out: this change slightly the result of this test. @@ -3903,7 +3903,7 @@ Mon Oct 14 09:27:01 CEST 2002 Daniel Veillard Tue Oct 15 12:42:25 CEST 2002 Daniel Veillard - * README: updated the contact informations + * README: updated the contact information Tue Oct 15 11:40:19 CEST 2002 Daniel Veillard @@ -4196,7 +4196,7 @@ Tue Jul 2 00:02:53 CEST 2002 Daniel Veillard tests/general/Makefile.am tests/general/bug-87.*: added a example in the regression tests for a case where the XML default namespace was missing from the namespace axis - * xsltproc/xsltproc.c: added the informations that parameter + * xsltproc/xsltproc.c: added the information that parameter strings are expected to be UTF8 * libxslt/attributes.c: fixes on attribute group implementation @@ -4685,7 +4685,7 @@ Sun Feb 10 20:16:15 CET 2002 Daniel Veillard * libxslt/imports.c libxslt/numbers.c libxslt/pattern.c libxslt/pattern.h libxslt/transform.c libxslt/xslt.c - libxslt/xsltInternals.h: adding extra run-time informations + libxslt/xsltInternals.h: adding extra run-time information to make the stylesheet really read-only at run-time. Sun Feb 10 16:21:09 CET 2002 Daniel Veillard @@ -5822,7 +5822,7 @@ Mon Jul 16 14:26:48 CEST 2001 Daniel Veillard * tests/*/Makefile.am: updated the path to xsltproc * libexslt/common.c libexslt/exslt.h libexslt/exsltconfig.h.in libexslt/functions.c libexslt/math.c libexslt/sets.c: added - versionning informations, some cleanup, and added documentation + versioning information, some cleanup, and added documentation to a couple of exported functions Sun Jul 15 15:27:47 CEST 2001 Thomas Broyer @@ -5955,7 +5955,7 @@ Sun Jul 8 15:40:44 CEST 2001 Daniel Veillard Sun Jul 8 14:39:27 CEST 2001 Daniel Veillard * doc/extensions.html: fixed a number of typo found by Dan York - * libxslt/xsltutils.c: improved the profiling ouput, added the + * libxslt/xsltutils.c: improved the profiling output, added the average value too. Sun Jul 8 00:01:21 CEST 2001 Daniel Veillard @@ -6076,7 +6076,7 @@ Thu Jun 28 23:01:14 CEST 2001 Daniel Veillard Thu Jun 28 15:48:06 CEST 2001 Daniel Veillard * libxslt/xsltwin32config.h[.in]: added configuration/version - informations for Windows/MSC + information for Windows/MSC * libxslt/libxslt.h libxslt/*.c: internal header to centralize includes switches * libxslt/Makefile.am: added libxslt.h and xsltwin32config.h[.in] @@ -6205,7 +6205,7 @@ Sun Jun 17 13:15:48 CEST 2001 Daniel Veillard * configure.in: preparing 0.12.0 release * libxslt/transform.c: a bit of cleanup on the XInclude defaults * libxslt/xsltconfig.h.in: added doc inline comment - * libxslt/xslt.[ch] libxslt/xsltproc.c: added more version informations + * libxslt/xslt.[ch] libxslt/xsltproc.c: added more version information and enriched xsltproc --version to show them * doc/html/*.html: rebuilt the docs * doc/Makefile.am libxslt.spec.in: try to make sure John Fleck @@ -6440,7 +6440,7 @@ Fri May 18 16:48:13 CEST 2001 Daniel Veillard * libxslt/xslt.c libxslt/variables.c libxslt/templates.c libxslt/keys.[ch] libxslt/functions.c: cleanups for ctxt->inst - avoiding modifying stylesheet informations, and fixing + avoiding modifying stylesheet information, and fixing document() when called from a global variable init Thu May 17 17:24:35 CEST 2001 Daniel Veillard @@ -6954,7 +6954,7 @@ Tue Mar 6 19:03:21 CET 2001 Daniel Veillard * libxslt/preproc.[ch] Makefile.am templates.[ch] transform.[ch] xsltInternals.h: started working on optimizing stylesheet - element parsing. Just builds the extra informations so far. + element parsing. Just builds the extra information so far. * xsltutils.h: added a missing XPath decl Tue Mar 6 09:52:13 CET 2001 Daniel Veillard @@ -7145,7 +7145,7 @@ Wed Feb 14 15:39:06 CET 2001 Daniel Veillard libxslt/xsltInternals.h libxslt/transform.[ch] libxslt/templates.c libxslt/xslt.c: Added apply-imports, keep a stack of running templates - * libxslt/xsltutils.c: bugfixes, gather the output informations + * libxslt/xsltutils.c: bugfixes, gather the output information down the cascade * tests/xmlspec/Makefile.am tests/xmlspec/REC-xml-2e.xsl tests/xmlspec/diffspec.xsl tests/xmlspec/xmlspec.xsl: running @@ -7679,5 +7679,5 @@ Fri Jan 5 11:34:12 CET 2001 Daniel Veillard Fri Jan 5 11:14:29 CET 2001 Daniel Veillard - * README: basic informations + * README: basic information * Changelog: created diff --git a/dll/3rdparty/libxslt/attributes.c b/dll/3rdparty/libxslt/attributes.c index 8191f44948e..4e00ae40988 100644 --- a/dll/3rdparty/libxslt/attributes.c +++ b/dll/3rdparty/libxslt/attributes.c @@ -636,9 +636,11 @@ xsltResolveAttrSet(xsltAttrSetPtr set, xsltStylesheetPtr topStyle, * resolve the references in an attribute set. */ static void -xsltResolveSASCallback(xsltAttrSetPtr set, xsltAttrSetContextPtr asctx, +xsltResolveSASCallback(void *payload, void *data, const xmlChar *name, const xmlChar *ns, ATTRIBUTE_UNUSED const xmlChar *ignored) { + xsltAttrSetPtr set = (xsltAttrSetPtr) payload; + xsltAttrSetContextPtr asctx = (xsltAttrSetContextPtr) data; xsltStylesheetPtr topStyle = asctx->topStyle; xsltStylesheetPtr style = asctx->style; @@ -685,8 +687,8 @@ xsltResolveStylesheetAttributeSet(xsltStylesheetPtr style) { style->attributeSets = xmlHashCreate(10); } asctx.style = cur; - xmlHashScanFull(cur->attributeSets, - (xmlHashScannerFull) xsltResolveSASCallback, &asctx); + xmlHashScanFull(cur->attributeSets, xsltResolveSASCallback, + &asctx); if (cur != style) { /* @@ -714,13 +716,13 @@ void xsltAttribute(xsltTransformContextPtr ctxt, xmlNodePtr contextNode, xmlNodePtr inst, - xsltStylePreCompPtr castedComp) + xsltElemPreCompPtr castedComp) { #ifdef XSLT_REFACTORED xsltStyleItemAttributePtr comp = (xsltStyleItemAttributePtr) castedComp; #else - xsltStylePreCompPtr comp = castedComp; + xsltStylePreCompPtr comp = (xsltStylePreCompPtr) castedComp; #endif xmlNodePtr targetElem; xmlChar *prop = NULL; @@ -1187,6 +1189,12 @@ xsltApplyAttributeSet(xsltTransformContextPtr ctxt, xmlNodePtr node, } } +static void +xsltFreeAttributeSetsEntry(void *payload, + const xmlChar *name ATTRIBUTE_UNUSED) { + xsltFreeAttrSet((xsltAttrSetPtr) payload); +} + /** * xsltFreeAttributeSetsHashes: * @style: an XSLT stylesheet @@ -1197,6 +1205,6 @@ void xsltFreeAttributeSetsHashes(xsltStylesheetPtr style) { if (style->attributeSets != NULL) xmlHashFree((xmlHashTablePtr) style->attributeSets, - (xmlHashDeallocator) xsltFreeAttrSet); + xsltFreeAttributeSetsEntry); style->attributeSets = NULL; } diff --git a/dll/3rdparty/libxslt/extensions.c b/dll/3rdparty/libxslt/extensions.c index 58c99138f28..4fcf69c4efd 100644 --- a/dll/3rdparty/libxslt/extensions.c +++ b/dll/3rdparty/libxslt/extensions.c @@ -187,6 +187,11 @@ xsltFreeExtModule(xsltExtModulePtr ext) xmlFree(ext); } +static void +xsltFreeExtModuleEntry(void *payload, const xmlChar *name ATTRIBUTE_UNUSED) { + xsltFreeExtModule((xsltExtModulePtr) payload); +} + /** * xsltNewExtData: * @extModule: the module @@ -228,6 +233,11 @@ xsltFreeExtData(xsltExtDataPtr ext) xmlFree(ext); } +static void +xsltFreeExtDataEntry(void *payload, const xmlChar *name ATTRIBUTE_UNUSED) { + xsltFreeExtData((xsltExtDataPtr) payload); +} + /** * xsltNewExtElement: * @precomp: the pre-computation function @@ -272,6 +282,11 @@ xsltFreeExtElement(xsltExtElementPtr ext) xmlFree(ext); } +static void +xsltFreeExtElementEntry(void *payload, const xmlChar *name ATTRIBUTE_UNUSED) { + xsltFreeExtElement((xsltExtElementPtr) payload); +} + #ifdef WITH_MODULES typedef void (*exsltRegisterFunction) (void); @@ -919,9 +934,10 @@ struct _xsltInitExtCtxt { * Initializes an extension module */ static void -xsltInitCtxtExt(xsltExtDataPtr styleData, xsltInitExtCtxt * ctxt, - const xmlChar * URI) +xsltInitCtxtExt(void *payload, void *data, const xmlChar * URI) { + xsltExtDataPtr styleData = (xsltExtDataPtr) payload; + xsltInitExtCtxt *ctxt = (xsltInitExtCtxt *) data; xsltExtModulePtr module; xsltExtDataPtr ctxtData; void *extData; @@ -1014,8 +1030,7 @@ xsltInitCtxtExts(xsltTransformContextPtr ctxt) while (style != NULL) { if (style->extInfos != NULL) { - xmlHashScan(style->extInfos, - (xmlHashScanner) xsltInitCtxtExt, &ctx); + xmlHashScan(style->extInfos, xsltInitCtxtExt, &ctx); if (ctx.ret == -1) return (-1); } @@ -1037,9 +1052,10 @@ xsltInitCtxtExts(xsltTransformContextPtr ctxt) * Shutdown an extension module loaded */ static void -xsltShutdownCtxtExt(xsltExtDataPtr data, xsltTransformContextPtr ctxt, - const xmlChar * URI) +xsltShutdownCtxtExt(void *payload, void *vctxt, const xmlChar * URI) { + xsltExtDataPtr data = (xsltExtDataPtr) payload; + xsltTransformContextPtr ctxt = (xsltTransformContextPtr) vctxt; xsltExtModulePtr module; if ((data == NULL) || (ctxt == NULL) || (URI == NULL)) @@ -1068,9 +1084,8 @@ xsltShutdownCtxtExts(xsltTransformContextPtr ctxt) return; if (ctxt->extInfos == NULL) return; - xmlHashScan(ctxt->extInfos, (xmlHashScanner) xsltShutdownCtxtExt, - ctxt); - xmlHashFree(ctxt->extInfos, (xmlHashDeallocator) xsltFreeExtData); + xmlHashScan(ctxt->extInfos, xsltShutdownCtxtExt, ctxt); + xmlHashFree(ctxt->extInfos, xsltFreeExtDataEntry); ctxt->extInfos = NULL; } @@ -1083,9 +1098,10 @@ xsltShutdownCtxtExts(xsltTransformContextPtr ctxt) * Shutdown an extension module loaded */ static void -xsltShutdownExt(xsltExtDataPtr data, xsltStylesheetPtr style, - const xmlChar * URI) +xsltShutdownExt(void *payload, void *vctxt, const xmlChar * URI) { + xsltExtDataPtr data = (xsltExtDataPtr) payload; + xsltStylesheetPtr style = (xsltStylesheetPtr) vctxt; xsltExtModulePtr module; if ((data == NULL) || (style == NULL) || (URI == NULL)) @@ -1103,8 +1119,7 @@ xsltShutdownExt(xsltExtDataPtr data, xsltStylesheetPtr style, * Don't remove the entry from the hash table here, since * this will produce segfaults - this fixes bug #340624. * - * xmlHashRemoveEntry(style->extInfos, URI, - * (xmlHashDeallocator) xsltFreeExtData); + * xmlHashRemoveEntry(style->extInfos, URI, xsltFreeExtDataEntry); */ } @@ -1121,8 +1136,8 @@ xsltShutdownExts(xsltStylesheetPtr style) return; if (style->extInfos == NULL) return; - xmlHashScan(style->extInfos, (xmlHashScanner) xsltShutdownExt, style); - xmlHashFree(style->extInfos, (xmlHashDeallocator) xsltFreeExtData); + xmlHashScan(style->extInfos, xsltShutdownExt, style); + xmlHashFree(style->extInfos, xsltFreeExtDataEntry); style->extInfos = NULL; } @@ -1310,8 +1325,7 @@ xsltUnregisterExtModule(const xmlChar * URI) xmlMutexLock(xsltExtMutex); - ret = xmlHashRemoveEntry(xsltExtensionsHash, URI, - (xmlHashDeallocator) xsltFreeExtModule); + ret = xmlHashRemoveEntry(xsltExtensionsHash, URI, xsltFreeExtModuleEntry); xmlMutexUnlock(xsltExtMutex); @@ -1331,8 +1345,7 @@ xsltUnregisterAllExtModules(void) xmlMutexLock(xsltExtMutex); - xmlHashFree(xsltExtensionsHash, - (xmlHashDeallocator) xsltFreeExtModule); + xmlHashFree(xsltExtensionsHash, xsltFreeExtModuleEntry); xsltExtensionsHash = NULL; xmlMutexUnlock(xsltExtMutex); @@ -1471,6 +1484,11 @@ xsltUnregisterAllExtModuleFunction(void) } +static void +xsltFreeElemPreComp(xsltElemPreCompPtr comp) { + xmlFree(comp); +} + /** * xsltNewElemPreComp: * @style: the XSLT stylesheet @@ -1495,8 +1513,7 @@ xsltNewElemPreComp(xsltStylesheetPtr style, xmlNodePtr inst, } memset(cur, 0, sizeof(xsltElemPreComp)); - xsltInitElemPreComp(cur, style, inst, function, - (xsltElemPreCompDeallocator) xmlFree); + xsltInitElemPreComp(cur, style, inst, function, xsltFreeElemPreComp); return (cur); } @@ -1628,7 +1645,7 @@ xsltRegisterExtModuleElement(const xmlChar * name, const xmlChar * URI, } xmlHashUpdateEntry2(xsltElementsHash, name, URI, (void *) ext, - (xmlHashDeallocator) xsltFreeExtElement); + xsltFreeExtElementEntry); done: xmlMutexUnlock(xsltExtMutex); @@ -1771,7 +1788,7 @@ xsltUnregisterExtModuleElement(const xmlChar * name, const xmlChar * URI) xmlMutexLock(xsltExtMutex); ret = xmlHashRemoveEntry2(xsltElementsHash, name, URI, - (xmlHashDeallocator) xsltFreeExtElement); + xsltFreeExtElementEntry); xmlMutexUnlock(xsltExtMutex); @@ -1788,7 +1805,7 @@ xsltUnregisterAllExtModuleElement(void) { xmlMutexLock(xsltExtMutex); - xmlHashFree(xsltElementsHash, (xmlHashDeallocator) xsltFreeExtElement); + xmlHashFree(xsltElementsHash, xsltFreeExtElementEntry); xsltElementsHash = NULL; xmlMutexUnlock(xsltExtMutex); @@ -2046,7 +2063,7 @@ xsltExtElementPreCompTest(xsltStylesheetPtr style, xmlNodePtr inst, * @ctxt: an XSLT processing context * @node: The current node * @inst: the instruction in the stylesheet - * @comp: precomputed informations + * @comp: precomputed information * * Process a libxslt:test node */ @@ -2230,7 +2247,7 @@ xsltRegisterTestModule(void) static void xsltHashScannerModuleFree(void *payload ATTRIBUTE_UNUSED, void *data ATTRIBUTE_UNUSED, - xmlChar * name ATTRIBUTE_UNUSED) + const xmlChar *name ATTRIBUTE_UNUSED) { #ifdef WITH_MODULES xmlModuleClose(payload); @@ -2280,10 +2297,11 @@ xsltCleanupGlobals(void) static void xsltDebugDumpExtensionsCallback(void *function ATTRIBUTE_UNUSED, - FILE * output, const xmlChar * name, + void *data, const xmlChar * name, const xmlChar * URI, const xmlChar * not_used ATTRIBUTE_UNUSED) { + FILE *output = (FILE *) data; if (!name || !URI) return; fprintf(output, "{%s}%s\n", URI, name); @@ -2291,10 +2309,11 @@ xsltDebugDumpExtensionsCallback(void *function ATTRIBUTE_UNUSED, static void xsltDebugDumpExtModulesCallback(void *function ATTRIBUTE_UNUSED, - FILE * output, const xmlChar * URI, + void *data, const xmlChar * URI, const xmlChar * not_used ATTRIBUTE_UNUSED, const xmlChar * not_used2 ATTRIBUTE_UNUSED) { + FILE *output = (FILE *) data; if (!URI) return; fprintf(output, "%s\n", URI); @@ -2318,9 +2337,8 @@ xsltDebugDumpExtensions(FILE * output) else { fprintf(output, "Registered Extension Functions:\n"); xmlMutexLock(xsltExtMutex); - xmlHashScanFull(xsltFunctionsHash, - (xmlHashScannerFull) - xsltDebugDumpExtensionsCallback, output); + xmlHashScanFull(xsltFunctionsHash, xsltDebugDumpExtensionsCallback, + output); xmlMutexUnlock(xsltExtMutex); } if (!xsltElementsHash) @@ -2328,9 +2346,8 @@ xsltDebugDumpExtensions(FILE * output) else { fprintf(output, "\nRegistered Extension Elements:\n"); xmlMutexLock(xsltExtMutex); - xmlHashScanFull(xsltElementsHash, - (xmlHashScannerFull) - xsltDebugDumpExtensionsCallback, output); + xmlHashScanFull(xsltElementsHash, xsltDebugDumpExtensionsCallback, + output); xmlMutexUnlock(xsltExtMutex); } if (!xsltExtensionsHash) @@ -2338,9 +2355,8 @@ xsltDebugDumpExtensions(FILE * output) else { fprintf(output, "\nRegistered Extension Modules:\n"); xmlMutexLock(xsltExtMutex); - xmlHashScanFull(xsltExtensionsHash, - (xmlHashScannerFull) - xsltDebugDumpExtModulesCallback, output); + xmlHashScanFull(xsltExtensionsHash, xsltDebugDumpExtModulesCallback, + output); xmlMutexUnlock(xsltExtMutex); } diff --git a/dll/3rdparty/libxslt/extra.c b/dll/3rdparty/libxslt/extra.c index 71fe28a1db7..509fdb47c65 100644 --- a/dll/3rdparty/libxslt/extra.c +++ b/dll/3rdparty/libxslt/extra.c @@ -27,14 +27,14 @@ * @ctxt: an XSLT processing context * @node: The current node * @inst: the instruction in the stylesheet - * @comp: precomputed informations + * @comp: precomputed information * * Process an debug node */ void xsltDebug(xsltTransformContextPtr ctxt, xmlNodePtr node ATTRIBUTE_UNUSED, xmlNodePtr inst ATTRIBUTE_UNUSED, - xsltStylePreCompPtr comp ATTRIBUTE_UNUSED) + xsltElemPreCompPtr comp ATTRIBUTE_UNUSED) { int i, j; @@ -159,21 +159,21 @@ xsltRegisterAllExtras (void) { xsltRegisterExtModuleElement((const xmlChar *) "debug", XSLT_LIBXSLT_NAMESPACE, NULL, - (xsltTransformFunction) xsltDebug); + xsltDebug); xsltRegisterExtModuleElement((const xmlChar *) "output", XSLT_SAXON_NAMESPACE, xsltDocumentComp, - (xsltTransformFunction) xsltDocumentElem); + xsltDocumentElem); xsltRegisterExtModuleElement((const xmlChar *) "write", XSLT_XALAN_NAMESPACE, xsltDocumentComp, - (xsltTransformFunction) xsltDocumentElem); + xsltDocumentElem); xsltRegisterExtModuleElement((const xmlChar *) "document", XSLT_XT_NAMESPACE, xsltDocumentComp, - (xsltTransformFunction) xsltDocumentElem); + xsltDocumentElem); xsltRegisterExtModuleElement((const xmlChar *) "document", XSLT_NAMESPACE, xsltDocumentComp, - (xsltTransformFunction) xsltDocumentElem); + xsltDocumentElem); } diff --git a/dll/3rdparty/libxslt/functions.c b/dll/3rdparty/libxslt/functions.c index decb3d98989..01ce96cad18 100644 --- a/dll/3rdparty/libxslt/functions.c +++ b/dll/3rdparty/libxslt/functions.c @@ -37,8 +37,9 @@ * Returns the callback function or NULL if not found */ xmlXPathFunction -xsltXPathFunctionLookup (xmlXPathContextPtr ctxt, +xsltXPathFunctionLookup (void *vctxt, const xmlChar *name, const xmlChar *ns_uri) { + xmlXPathContextPtr ctxt = (xmlXPathContextPtr) vctxt; xmlXPathFunction ret; if ((ctxt == NULL) || (name == NULL) || (ns_uri == NULL)) diff --git a/dll/3rdparty/libxslt/imports.c b/dll/3rdparty/libxslt/imports.c index ac659f0ff3f..b3ec6d73472 100644 --- a/dll/3rdparty/libxslt/imports.c +++ b/dll/3rdparty/libxslt/imports.c @@ -28,8 +28,7 @@ static void xsltFixImportedCompSteps(xsltStylesheetPtr master, xsltStylesheetPtr style) { xsltStylesheetPtr res; - xmlHashScan(style->templatesHash, - (xmlHashScanner) xsltNormalizeCompSteps, master); + xmlHashScan(style->templatesHash, xsltNormalizeCompSteps, master); master->extrasNr += style->extrasNr; for (res = style->imports; res != NULL; res = res->next) { xsltFixImportedCompSteps(master, res); @@ -292,7 +291,7 @@ xsltNeedElemSpaceHandling(xsltTransformContextPtr ctxt) { * @ctxt: an XSLT transformation context * @node: an XML node * - * Find strip-space or preserve-space informations for an element + * Find strip-space or preserve-space information for an element * respect the import precedence or the wildcards * * Returns 1 if space should be stripped, 0 if not, and 2 if everything diff --git a/dll/3rdparty/libxslt/keys.c b/dll/3rdparty/libxslt/keys.c index 91705384bca..357170b2380 100644 --- a/dll/3rdparty/libxslt/keys.c +++ b/dll/3rdparty/libxslt/keys.c @@ -126,6 +126,11 @@ xsltNewKeyTable(const xmlChar *name, const xmlChar *nameURI) { return(cur); } +static void +xsltFreeNodeSetEntry(void *payload, const xmlChar *name ATTRIBUTE_UNUSED) { + xmlXPathFreeNodeSet((xmlNodeSetPtr) payload); +} + /** * xsltFreeKeyTable: * @keyt: an XSLT key table @@ -141,8 +146,7 @@ xsltFreeKeyTable(xsltKeyTablePtr keyt) { if (keyt->nameURI != NULL) xmlFree(keyt->nameURI); if (keyt->keys != NULL) - xmlHashFree(keyt->keys, - (xmlHashDeallocator) xmlXPathFreeNodeSet); + xmlHashFree(keyt->keys, xsltFreeNodeSetEntry); memset(keyt, -1, sizeof(xsltKeyTable)); xmlFree(keyt); } diff --git a/dll/3rdparty/libxslt/numbers.c b/dll/3rdparty/libxslt/numbers.c index 470ee3253c5..9b1fc3b8889 100644 --- a/dll/3rdparty/libxslt/numbers.c +++ b/dll/3rdparty/libxslt/numbers.c @@ -699,7 +699,7 @@ xsltNumberFormatGetValue(xmlXPathContextPtr context, /** * xsltNumberFormat: * @ctxt: the XSLT transformation context - * @data: the formatting informations + * @data: the formatting information * @node: the data to format * * Convert one number. @@ -869,7 +869,7 @@ xsltFormatNumberPreSuffix(xsltDecimalFormatPtr self, xmlChar **format, xsltForma * @self: the decimal format * @format: the format requested * @number: the value to format - * @result: the place to ouput the result + * @result: the place to output the result * * format-number() uses the JDK 1.1 DecimalFormat class: * diff --git a/dll/3rdparty/libxslt/pattern.c b/dll/3rdparty/libxslt/pattern.c index e27e9402a73..1207913ad15 100644 --- a/dll/3rdparty/libxslt/pattern.c +++ b/dll/3rdparty/libxslt/pattern.c @@ -94,6 +94,7 @@ struct _xsltCompMatch { xmlNsPtr *nsList; /* the namespaces in scope */ int nsNr; /* the number of namespaces in scope */ xsltStepOpPtr steps; /* ops for computation */ + int novar; /* doesn't contain variables */ }; typedef struct _xsltParserContext xsltParserContext; @@ -199,6 +200,12 @@ xsltFreeCompMatchList(xsltCompMatchPtr comp) { } } +static void +xsltFreeCompMatchListEntry(void *payload, + const xmlChar *name ATTRIBUTE_UNUSED) { + xsltFreeCompMatchList((xsltCompMatchPtr) payload); +} + /** * xsltNormalizeCompSteps: * @payload: pointer to template hash table entry @@ -494,6 +501,11 @@ xsltPatPushState(xsltTransformContextPtr ctxt, xsltStepStates *states, return(0); } +static void +xmlXPathFreeObjectWrapper(void *obj) { + xmlXPathFreeObject((xmlXPathObjectPtr) obj); +} + /** * xsltTestCompMatchDirect: * @ctxt: a XSLT process context @@ -564,7 +576,8 @@ xsltTestCompMatchDirect(xsltTransformContextPtr ctxt, xsltCompMatchPtr comp, } ix = 0; - if ((parent == NULL) || (node->doc == NULL) || isRVT) + if ((parent == NULL) || (node->doc == NULL) || isRVT || + (comp->novar == 0)) nocache = 1; if (nocache == 0) { @@ -579,7 +592,7 @@ xsltTestCompMatchDirect(xsltTransformContextPtr ctxt, xsltCompMatchPtr comp, XSLT_RUNTIME_EXTRA(ctxt, sel->indexExtra, ival) = 0; XSLT_RUNTIME_EXTRA_FREE(ctxt, sel->lenExtra) = - (xmlFreeFunc) xmlXPathFreeObject; + xmlXPathFreeObjectWrapper; } else list = newlist; } @@ -1940,6 +1953,7 @@ xsltCompilePatternInternal(const xmlChar *pattern, xmlDocPtr doc, j++; } element->nsNr = j; + element->novar = novar; #ifdef WITH_XSLT_DEBUG_PATTERN @@ -2559,7 +2573,7 @@ void xsltFreeTemplateHashes(xsltStylesheetPtr style) { if (style->templatesHash != NULL) xmlHashFree((xmlHashTablePtr) style->templatesHash, - (xmlHashDeallocator) xsltFreeCompMatchList); + xsltFreeCompMatchListEntry); if (style->rootMatch != NULL) xsltFreeCompMatchList(style->rootMatch); if (style->keyMatch != NULL) diff --git a/dll/3rdparty/libxslt/preproc.c b/dll/3rdparty/libxslt/preproc.c index 44d4983c15d..312a75b4d6a 100644 --- a/dll/3rdparty/libxslt/preproc.c +++ b/dll/3rdparty/libxslt/preproc.c @@ -295,40 +295,40 @@ xsltNewStylePreComp(xsltStylesheetPtr style, xsltStyleType type) { cur->type = type; switch (cur->type) { case XSLT_FUNC_COPY: - cur->func = (xsltTransformFunction) xsltCopy;break; + cur->func = xsltCopy;break; case XSLT_FUNC_SORT: - cur->func = (xsltTransformFunction) xsltSort;break; + cur->func = xsltSort;break; case XSLT_FUNC_TEXT: - cur->func = (xsltTransformFunction) xsltText;break; + cur->func = xsltText;break; case XSLT_FUNC_ELEMENT: - cur->func = (xsltTransformFunction) xsltElement;break; + cur->func = xsltElement;break; case XSLT_FUNC_ATTRIBUTE: - cur->func = (xsltTransformFunction) xsltAttribute;break; + cur->func = xsltAttribute;break; case XSLT_FUNC_COMMENT: - cur->func = (xsltTransformFunction) xsltComment;break; + cur->func = xsltComment;break; case XSLT_FUNC_PI: - cur->func = (xsltTransformFunction) xsltProcessingInstruction; + cur->func = xsltProcessingInstruction; break; case XSLT_FUNC_COPYOF: - cur->func = (xsltTransformFunction) xsltCopyOf;break; + cur->func = xsltCopyOf;break; case XSLT_FUNC_VALUEOF: - cur->func = (xsltTransformFunction) xsltValueOf;break; + cur->func = xsltValueOf;break; case XSLT_FUNC_NUMBER: - cur->func = (xsltTransformFunction) xsltNumber;break; + cur->func = xsltNumber;break; case XSLT_FUNC_APPLYIMPORTS: - cur->func = (xsltTransformFunction) xsltApplyImports;break; + cur->func = xsltApplyImports;break; case XSLT_FUNC_CALLTEMPLATE: - cur->func = (xsltTransformFunction) xsltCallTemplate;break; + cur->func = xsltCallTemplate;break; case XSLT_FUNC_APPLYTEMPLATES: - cur->func = (xsltTransformFunction) xsltApplyTemplates;break; + cur->func = xsltApplyTemplates;break; case XSLT_FUNC_CHOOSE: - cur->func = (xsltTransformFunction) xsltChoose;break; + cur->func = xsltChoose;break; case XSLT_FUNC_IF: - cur->func = (xsltTransformFunction) xsltIf;break; + cur->func = xsltIf;break; case XSLT_FUNC_FOREACH: - cur->func = (xsltTransformFunction) xsltForEach;break; + cur->func = xsltForEach;break; case XSLT_FUNC_DOCUMENT: - cur->func = (xsltTransformFunction) xsltDocumentElem;break; + cur->func = xsltDocumentElem;break; case XSLT_FUNC_WITHPARAM: case XSLT_FUNC_PARAM: case XSLT_FUNC_VARIABLE: @@ -2045,7 +2045,7 @@ xsltStylePreCompute(xsltStylesheetPtr style, xmlNodePtr node) { case XSLT_FUNC_DOCUMENT: /* The extra one */ node->psvi = (void *) xsltDocumentComp(style, node, - (xsltTransformFunction) xsltDocumentElem); + xsltDocumentElem); break; case XSLT_FUNC_MESSAGE: /* NOP yet */ @@ -2113,7 +2113,7 @@ xsltStylePreCompute(xsltStylesheetPtr style, xmlNodePtr node) { } else if (IS_XSLT_NAME(node, "document")) { /* The extra one */ node->psvi = (void *) xsltDocumentComp(style, node, - (xsltTransformFunction) xsltDocumentElem); + xsltDocumentElem); } else if (IS_XSLT_NAME(node, "output")) { /* Top-level */ return; @@ -2315,7 +2315,7 @@ xsltStylePreCompute(xsltStylesheetPtr style, xmlNodePtr inst) { } else if (IS_XSLT_NAME(inst, "document")) { xsltCheckInstructionElement(style, inst); inst->psvi = (void *) xsltDocumentComp(style, inst, - (xsltTransformFunction) xsltDocumentElem); + xsltDocumentElem); } else if ((style == NULL) || (style->forwards_compatible == 0)) { xsltTransformError(NULL, style, inst, "xsltStylePreCompute: unknown xsl:%s\n", inst->name); diff --git a/dll/3rdparty/libxslt/transform.c b/dll/3rdparty/libxslt/transform.c index 5097b76f241..966304ea115 100644 --- a/dll/3rdparty/libxslt/transform.c +++ b/dll/3rdparty/libxslt/transform.c @@ -2266,6 +2266,11 @@ xsltReleaseLocalRVTs(xsltTransformContextPtr ctxt, xmlDocPtr base) if (cur->prev != NULL) xsltTransformError(ctxt, NULL, NULL, "localRVT not head of list\n"); + /* Reset localRVT early because some RVTs might be registered again. */ + ctxt->localRVT = base; + if (base != NULL) + base->prev = NULL; + do { tmp = cur; cur = (xmlDocPtr) cur->next; @@ -2273,16 +2278,19 @@ xsltReleaseLocalRVTs(xsltTransformContextPtr ctxt, xmlDocPtr base) xsltReleaseRVT(ctxt, tmp); } else if (tmp->psvi == XSLT_RVT_GLOBAL) { xsltRegisterPersistRVT(ctxt, tmp); - } else if (tmp->psvi != XSLT_RVT_FUNC_RESULT) { + } else if (tmp->psvi == XSLT_RVT_FUNC_RESULT) { + /* + * This will either register the RVT again or move it to the + * context variable. + */ + xsltRegisterLocalRVT(ctxt, tmp); + tmp->psvi = XSLT_RVT_FUNC_RESULT; + } else { xmlGenericError(xmlGenericErrorContext, "xsltReleaseLocalRVTs: Unexpected RVT flag %p\n", tmp->psvi); } } while (cur != base); - - if (base != NULL) - base->prev = NULL; - ctxt->localRVT = base; } /** @@ -2621,8 +2629,8 @@ xsltApplySequenceConstructor(xsltTransformContextPtr ctxt, * Libxslt will now lookup if a handler is * registered in the context of this transformation. */ - func = (xsltTransformFunction) - xsltExtElementLookup(ctxt, cur->name, cur->ns->href); + func = xsltExtElementLookup(ctxt, cur->name, + cur->ns->href); } else func = ((xsltElemPreCompPtr) cur->psvi)->func; @@ -2807,8 +2815,8 @@ xsltApplySequenceConstructor(xsltTransformContextPtr ctxt, * Flagged as an extension element */ if (cur->psvi == xsltExtMarker) - function = (xsltTransformFunction) - xsltExtElementLookup(ctxt, cur->name, cur->ns->href); + function = xsltExtElementLookup(ctxt, cur->name, + cur->ns->href); else function = ((xsltElemPreCompPtr) cur->psvi)->func; @@ -3325,12 +3333,12 @@ xsltApplyOneTemplate(xsltTransformContextPtr ctxt, */ void xsltDocumentElem(xsltTransformContextPtr ctxt, xmlNodePtr node, - xmlNodePtr inst, xsltStylePreCompPtr castedComp) + xmlNodePtr inst, xsltElemPreCompPtr castedComp) { #ifdef XSLT_REFACTORED xsltStyleItemDocumentPtr comp = (xsltStyleItemDocumentPtr) castedComp; #else - xsltStylePreCompPtr comp = castedComp; + xsltStylePreCompPtr comp = (xsltStylePreCompPtr) castedComp; #endif xsltStylesheetPtr style = NULL; int ret; @@ -3839,7 +3847,7 @@ xsltDocumentElem(xsltTransformContextPtr ctxt, xmlNodePtr node, void xsltSort(xsltTransformContextPtr ctxt, xmlNodePtr node ATTRIBUTE_UNUSED, xmlNodePtr inst, - xsltStylePreCompPtr comp) { + xsltElemPreCompPtr comp) { if (comp == NULL) { xsltTransformError(ctxt, NULL, inst, "xsl:sort : compilation failed\n"); @@ -3860,12 +3868,12 @@ xsltSort(xsltTransformContextPtr ctxt, */ void xsltCopy(xsltTransformContextPtr ctxt, xmlNodePtr node, - xmlNodePtr inst, xsltStylePreCompPtr castedComp) + xmlNodePtr inst, xsltElemPreCompPtr castedComp) { #ifdef XSLT_REFACTORED xsltStyleItemCopyPtr comp = (xsltStyleItemCopyPtr) castedComp; #else - xsltStylePreCompPtr comp = castedComp; + xsltStylePreCompPtr comp = (xsltStylePreCompPtr) castedComp; #endif xmlNodePtr copy, oldInsert; @@ -3979,7 +3987,7 @@ xsltCopy(xsltTransformContextPtr ctxt, xmlNodePtr node, */ void xsltText(xsltTransformContextPtr ctxt, xmlNodePtr node ATTRIBUTE_UNUSED, - xmlNodePtr inst, xsltStylePreCompPtr comp ATTRIBUTE_UNUSED) { + xmlNodePtr inst, xsltElemPreCompPtr comp ATTRIBUTE_UNUSED) { if ((inst->children != NULL) && (comp != NULL)) { xmlNodePtr text = inst->children; xmlNodePtr copy; @@ -4016,11 +4024,11 @@ xsltText(xsltTransformContextPtr ctxt, xmlNodePtr node ATTRIBUTE_UNUSED, */ void xsltElement(xsltTransformContextPtr ctxt, xmlNodePtr node, - xmlNodePtr inst, xsltStylePreCompPtr castedComp) { + xmlNodePtr inst, xsltElemPreCompPtr castedComp) { #ifdef XSLT_REFACTORED xsltStyleItemElementPtr comp = (xsltStyleItemElementPtr) castedComp; #else - xsltStylePreCompPtr comp = castedComp; + xsltStylePreCompPtr comp = (xsltStylePreCompPtr) castedComp; #endif xmlChar *prop = NULL; const xmlChar *name, *prefix = NULL, *nsName = NULL; @@ -4224,7 +4232,7 @@ error: */ void xsltComment(xsltTransformContextPtr ctxt, xmlNodePtr node, - xmlNodePtr inst, xsltStylePreCompPtr comp ATTRIBUTE_UNUSED) { + xmlNodePtr inst, xsltElemPreCompPtr comp ATTRIBUTE_UNUSED) { xmlChar *value = NULL; xmlNodePtr commentNode; int len; @@ -4268,11 +4276,11 @@ xsltComment(xsltTransformContextPtr ctxt, xmlNodePtr node, */ void xsltProcessingInstruction(xsltTransformContextPtr ctxt, xmlNodePtr node, - xmlNodePtr inst, xsltStylePreCompPtr castedComp) { + xmlNodePtr inst, xsltElemPreCompPtr castedComp) { #ifdef XSLT_REFACTORED xsltStyleItemPIPtr comp = (xsltStyleItemPIPtr) castedComp; #else - xsltStylePreCompPtr comp = castedComp; + xsltStylePreCompPtr comp = (xsltStylePreCompPtr) castedComp; #endif const xmlChar *name; xmlChar *value = NULL; @@ -4334,11 +4342,11 @@ error: */ void xsltCopyOf(xsltTransformContextPtr ctxt, xmlNodePtr node, - xmlNodePtr inst, xsltStylePreCompPtr castedComp) { + xmlNodePtr inst, xsltElemPreCompPtr castedComp) { #ifdef XSLT_REFACTORED xsltStyleItemCopyOfPtr comp = (xsltStyleItemCopyOfPtr) castedComp; #else - xsltStylePreCompPtr comp = castedComp; + xsltStylePreCompPtr comp = (xsltStylePreCompPtr) castedComp; #endif xmlXPathObjectPtr res = NULL; xmlNodeSetPtr list = NULL; @@ -4478,12 +4486,12 @@ xsltCopyOf(xsltTransformContextPtr ctxt, xmlNodePtr node, */ void xsltValueOf(xsltTransformContextPtr ctxt, xmlNodePtr node, - xmlNodePtr inst, xsltStylePreCompPtr castedComp) + xmlNodePtr inst, xsltElemPreCompPtr castedComp) { #ifdef XSLT_REFACTORED xsltStyleItemValueOfPtr comp = (xsltStyleItemValueOfPtr) castedComp; #else - xsltStylePreCompPtr comp = castedComp; + xsltStylePreCompPtr comp = (xsltStylePreCompPtr) castedComp; #endif xmlXPathObjectPtr res = NULL; xmlChar *value = NULL; @@ -4552,12 +4560,12 @@ error: */ void xsltNumber(xsltTransformContextPtr ctxt, xmlNodePtr node, - xmlNodePtr inst, xsltStylePreCompPtr castedComp) + xmlNodePtr inst, xsltElemPreCompPtr castedComp) { #ifdef XSLT_REFACTORED xsltStyleItemNumberPtr comp = (xsltStyleItemNumberPtr) castedComp; #else - xsltStylePreCompPtr comp = castedComp; + xsltStylePreCompPtr comp = (xsltStylePreCompPtr) castedComp; #endif xmlXPathContextPtr xpctxt; xmlNsPtr *oldXPNamespaces; @@ -4610,7 +4618,7 @@ xsltNumber(xsltTransformContextPtr ctxt, xmlNodePtr node, void xsltApplyImports(xsltTransformContextPtr ctxt, xmlNodePtr contextNode, xmlNodePtr inst, - xsltStylePreCompPtr comp ATTRIBUTE_UNUSED) + xsltElemPreCompPtr comp ATTRIBUTE_UNUSED) { xsltTemplatePtr templ; @@ -4678,13 +4686,13 @@ xsltApplyImports(xsltTransformContextPtr ctxt, xmlNodePtr contextNode, */ void xsltCallTemplate(xsltTransformContextPtr ctxt, xmlNodePtr node, - xmlNodePtr inst, xsltStylePreCompPtr castedComp) + xmlNodePtr inst, xsltElemPreCompPtr castedComp) { #ifdef XSLT_REFACTORED xsltStyleItemCallTemplatePtr comp = (xsltStyleItemCallTemplatePtr) castedComp; #else - xsltStylePreCompPtr comp = castedComp; + xsltStylePreCompPtr comp = (xsltStylePreCompPtr) castedComp; #endif xsltStackElemPtr withParams = NULL; @@ -4781,13 +4789,13 @@ xsltCallTemplate(xsltTransformContextPtr ctxt, xmlNodePtr node, */ void xsltApplyTemplates(xsltTransformContextPtr ctxt, xmlNodePtr node, - xmlNodePtr inst, xsltStylePreCompPtr castedComp) + xmlNodePtr inst, xsltElemPreCompPtr castedComp) { #ifdef XSLT_REFACTORED xsltStyleItemApplyTemplatesPtr comp = (xsltStyleItemApplyTemplatesPtr) castedComp; #else - xsltStylePreCompPtr comp = castedComp; + xsltStylePreCompPtr comp = (xsltStylePreCompPtr) castedComp; #endif int i; xmlNodePtr cur, delNode = NULL, oldContextNode; @@ -5158,7 +5166,7 @@ error: */ void xsltChoose(xsltTransformContextPtr ctxt, xmlNodePtr contextNode, - xmlNodePtr inst, xsltStylePreCompPtr comp ATTRIBUTE_UNUSED) + xmlNodePtr inst, xsltElemPreCompPtr comp ATTRIBUTE_UNUSED) { xmlNodePtr cur; @@ -5317,14 +5325,14 @@ error: */ void xsltIf(xsltTransformContextPtr ctxt, xmlNodePtr contextNode, - xmlNodePtr inst, xsltStylePreCompPtr castedComp) + xmlNodePtr inst, xsltElemPreCompPtr castedComp) { int res = 0; #ifdef XSLT_REFACTORED xsltStyleItemIfPtr comp = (xsltStyleItemIfPtr) castedComp; #else - xsltStylePreCompPtr comp = castedComp; + xsltStylePreCompPtr comp = (xsltStylePreCompPtr) castedComp; #endif if ((ctxt == NULL) || (contextNode == NULL) || (inst == NULL)) @@ -5423,12 +5431,12 @@ error: */ void xsltForEach(xsltTransformContextPtr ctxt, xmlNodePtr contextNode, - xmlNodePtr inst, xsltStylePreCompPtr castedComp) + xmlNodePtr inst, xsltElemPreCompPtr castedComp) { #ifdef XSLT_REFACTORED xsltStyleItemForEachPtr comp = (xsltStyleItemForEachPtr) castedComp; #else - xsltStylePreCompPtr comp = castedComp; + xsltStylePreCompPtr comp = (xsltStylePreCompPtr) castedComp; #endif int i; xmlXPathObjectPtr res = NULL; @@ -6343,6 +6351,12 @@ xsltRunStylesheet(xsltStylesheetPtr style, xmlDocPtr doc, NULL, NULL)); } +static void +xsltMessageWrapper(xsltTransformContextPtr ctxt, xmlNodePtr node, + xmlNodePtr inst, xsltElemPreCompPtr comp ATTRIBUTE_UNUSED) { + xsltMessage(ctxt, node, inst); +} + /** * xsltRegisterAllElement: * @ctxt: the XPath context @@ -6354,79 +6368,79 @@ xsltRegisterAllElement(xsltTransformContextPtr ctxt) { xsltRegisterExtElement(ctxt, (const xmlChar *) "apply-templates", XSLT_NAMESPACE, - (xsltTransformFunction) xsltApplyTemplates); + xsltApplyTemplates); xsltRegisterExtElement(ctxt, (const xmlChar *) "apply-imports", XSLT_NAMESPACE, - (xsltTransformFunction) xsltApplyImports); + xsltApplyImports); xsltRegisterExtElement(ctxt, (const xmlChar *) "call-template", XSLT_NAMESPACE, - (xsltTransformFunction) xsltCallTemplate); + xsltCallTemplate); xsltRegisterExtElement(ctxt, (const xmlChar *) "element", XSLT_NAMESPACE, - (xsltTransformFunction) xsltElement); + xsltElement); xsltRegisterExtElement(ctxt, (const xmlChar *) "attribute", XSLT_NAMESPACE, - (xsltTransformFunction) xsltAttribute); + xsltAttribute); xsltRegisterExtElement(ctxt, (const xmlChar *) "text", XSLT_NAMESPACE, - (xsltTransformFunction) xsltText); + xsltText); xsltRegisterExtElement(ctxt, (const xmlChar *) "processing-instruction", XSLT_NAMESPACE, - (xsltTransformFunction) xsltProcessingInstruction); + xsltProcessingInstruction); xsltRegisterExtElement(ctxt, (const xmlChar *) "comment", XSLT_NAMESPACE, - (xsltTransformFunction) xsltComment); + xsltComment); xsltRegisterExtElement(ctxt, (const xmlChar *) "copy", XSLT_NAMESPACE, - (xsltTransformFunction) xsltCopy); + xsltCopy); xsltRegisterExtElement(ctxt, (const xmlChar *) "value-of", XSLT_NAMESPACE, - (xsltTransformFunction) xsltValueOf); + xsltValueOf); xsltRegisterExtElement(ctxt, (const xmlChar *) "number", XSLT_NAMESPACE, - (xsltTransformFunction) xsltNumber); + xsltNumber); xsltRegisterExtElement(ctxt, (const xmlChar *) "for-each", XSLT_NAMESPACE, - (xsltTransformFunction) xsltForEach); + xsltForEach); xsltRegisterExtElement(ctxt, (const xmlChar *) "if", XSLT_NAMESPACE, - (xsltTransformFunction) xsltIf); + xsltIf); xsltRegisterExtElement(ctxt, (const xmlChar *) "choose", XSLT_NAMESPACE, - (xsltTransformFunction) xsltChoose); + xsltChoose); xsltRegisterExtElement(ctxt, (const xmlChar *) "sort", XSLT_NAMESPACE, - (xsltTransformFunction) xsltSort); + xsltSort); xsltRegisterExtElement(ctxt, (const xmlChar *) "copy-of", XSLT_NAMESPACE, - (xsltTransformFunction) xsltCopyOf); + xsltCopyOf); xsltRegisterExtElement(ctxt, (const xmlChar *) "message", XSLT_NAMESPACE, - (xsltTransformFunction) xsltMessage); + xsltMessageWrapper); /* * Those don't have callable entry points but are registered anyway */ xsltRegisterExtElement(ctxt, (const xmlChar *) "variable", XSLT_NAMESPACE, - (xsltTransformFunction) xsltDebug); + xsltDebug); xsltRegisterExtElement(ctxt, (const xmlChar *) "param", XSLT_NAMESPACE, - (xsltTransformFunction) xsltDebug); + xsltDebug); xsltRegisterExtElement(ctxt, (const xmlChar *) "with-param", XSLT_NAMESPACE, - (xsltTransformFunction) xsltDebug); + xsltDebug); xsltRegisterExtElement(ctxt, (const xmlChar *) "decimal-format", XSLT_NAMESPACE, - (xsltTransformFunction) xsltDebug); + xsltDebug); xsltRegisterExtElement(ctxt, (const xmlChar *) "when", XSLT_NAMESPACE, - (xsltTransformFunction) xsltDebug); + xsltDebug); xsltRegisterExtElement(ctxt, (const xmlChar *) "otherwise", XSLT_NAMESPACE, - (xsltTransformFunction) xsltDebug); + xsltDebug); xsltRegisterExtElement(ctxt, (const xmlChar *) "fallback", XSLT_NAMESPACE, - (xsltTransformFunction) xsltDebug); + xsltDebug); } diff --git a/dll/3rdparty/libxslt/variables.c b/dll/3rdparty/libxslt/variables.c index fffb0c97f0b..3901a4204ad 100644 --- a/dll/3rdparty/libxslt/variables.c +++ b/dll/3rdparty/libxslt/variables.c @@ -102,7 +102,7 @@ xsltRegisterTmpRVT(xsltTransformContextPtr ctxt, xmlDocPtr RVT) return(-1); RVT->prev = NULL; - RVT->psvi = XSLT_RVT_VARIABLE; + RVT->psvi = XSLT_RVT_LOCAL; /* * We'll restrict the lifetime of user-created fragments @@ -142,6 +142,7 @@ xsltRegisterLocalRVT(xsltTransformContextPtr ctxt, return(-1); RVT->prev = NULL; + RVT->psvi = XSLT_RVT_LOCAL; /* * When evaluating "select" expressions of xsl:variable @@ -152,7 +153,6 @@ xsltRegisterLocalRVT(xsltTransformContextPtr ctxt, if ((ctxt->contextVariable != NULL) && (XSLT_TCTXT_VARIABLE(ctxt)->flags & XSLT_VAR_IN_SELECT)) { - RVT->psvi = XSLT_RVT_VARIABLE; RVT->next = (xmlNodePtr) XSLT_TCTXT_VARIABLE(ctxt)->fragment; XSLT_TCTXT_VARIABLE(ctxt)->fragment = RVT; return(0); @@ -162,7 +162,6 @@ xsltRegisterLocalRVT(xsltTransformContextPtr ctxt, * If not reference by a returning instruction (like EXSLT's function), * then this fragment will be freed, when the instruction exits. */ - RVT->psvi = XSLT_RVT_LOCAL; RVT->next = (xmlNodePtr) ctxt->localRVT; if (ctxt->localRVT != NULL) ctxt->localRVT->prev = (xmlNodePtr) RVT; @@ -293,14 +292,8 @@ xsltFlagRVTs(xsltTransformContextPtr ctxt, xmlXPathObjectPtr obj, void *val) { #endif if (val == XSLT_RVT_LOCAL) { - if (doc->psvi != XSLT_RVT_FUNC_RESULT) { - xmlGenericError(xmlGenericErrorContext, - "xsltFlagRVTs: Invalid transition %p => LOCAL\n", - doc->psvi); - return(-1); - } - - xsltRegisterLocalRVT(ctxt, doc); + if (doc->psvi == XSLT_RVT_FUNC_RESULT) + doc->psvi = XSLT_RVT_LOCAL; } else if (val == XSLT_RVT_GLOBAL) { if (doc->psvi != XSLT_RVT_LOCAL) { xmlGenericError(xmlGenericErrorContext, @@ -564,10 +557,12 @@ xsltFreeStackElem(xsltStackElemPtr elem) { cur = elem->fragment; elem->fragment = (xmlDocPtr) cur->next; - if (cur->psvi == XSLT_RVT_VARIABLE) { - xsltReleaseRVT((xsltTransformContextPtr) elem->context, - cur); - } else if (cur->psvi != XSLT_RVT_FUNC_RESULT) { + if (cur->psvi == XSLT_RVT_LOCAL) { + xsltReleaseRVT(elem->context, cur); + } else if (cur->psvi == XSLT_RVT_FUNC_RESULT) { + xsltRegisterLocalRVT(elem->context, cur); + cur->psvi = XSLT_RVT_FUNC_RESULT; + } else { xmlGenericError(xmlGenericErrorContext, "xsltFreeStackElem: Unexpected RVT flag %p\n", cur->psvi); @@ -595,6 +590,12 @@ xsltFreeStackElem(xsltStackElemPtr elem) { xmlFree(elem); } +static void +xsltFreeStackElemEntry(void *payload, const xmlChar *name ATTRIBUTE_UNUSED) { + xsltFreeStackElem((xsltStackElemPtr) payload); +} + + /** * xsltFreeStackElemList: * @elem: an XSLT stack element @@ -965,7 +966,7 @@ xsltEvalVariable(xsltTransformContextPtr ctxt, xsltStackElemPtr variable, * the Result Tree Fragment. */ variable->fragment = container; - container->psvi = XSLT_RVT_VARIABLE; + container->psvi = XSLT_RVT_LOCAL; oldOutput = ctxt->output; oldInsert = ctxt->insert; @@ -1234,6 +1235,13 @@ error: return(result); } +static void +xsltEvalGlobalVariableWrapper(void *payload, void *data, + const xmlChar *name ATTRIBUTE_UNUSED) { + xsltEvalGlobalVariable((xsltStackElemPtr) payload, + (xsltTransformContextPtr) data); +} + /** * xsltEvalGlobalVariables: * @ctxt: the XSLT transformation context @@ -1308,8 +1316,7 @@ xsltEvalGlobalVariables(xsltTransformContextPtr ctxt) { /* * This part does the actual evaluation */ - xmlHashScan(ctxt->globalVars, - (xmlHashScanner) xsltEvalGlobalVariable, ctxt); + xmlHashScan(ctxt->globalVars, xsltEvalGlobalVariableWrapper, ctxt); return(0); } @@ -2213,7 +2220,7 @@ xsltParseStylesheetParam(xsltTransformContextPtr ctxt, xmlNodePtr cur) void xsltFreeGlobalVariables(xsltTransformContextPtr ctxt) { - xmlHashFree(ctxt->globalVars, (xmlHashDeallocator) xsltFreeStackElem); + xmlHashFree(ctxt->globalVars, xsltFreeStackElemEntry); } /** diff --git a/dll/3rdparty/libxslt/xslt.c b/dll/3rdparty/libxslt/xslt.c index 411f3444940..e37a33f26f1 100644 --- a/dll/3rdparty/libxslt/xslt.c +++ b/dll/3rdparty/libxslt/xslt.c @@ -3696,7 +3696,7 @@ xsltGatherNamespaces(xsltStylesheetPtr style) { style->warnings++; } else if (URI == NULL) { xmlHashUpdateEntry(style->nsHash, ns->prefix, - (void *) ns->href, (xmlHashDeallocator)xmlFree); + (void *) ns->href, NULL); #ifdef WITH_XSLT_DEBUG_PARSING xsltGenericDebug(xsltGenericDebugContext, diff --git a/dll/3rdparty/libxslt/xsltconfig.h.in b/dll/3rdparty/libxslt/xsltconfig.h.in index 5fa5e589631..1dda1766c25 100644 --- a/dll/3rdparty/libxslt/xsltconfig.h.in +++ b/dll/3rdparty/libxslt/xsltconfig.h.in @@ -1,6 +1,6 @@ /* - * Summary: compile-time version informations for the XSLT engine - * Description: compile-time version informations for the XSLT engine + * Summary: compile-time version information for the XSLT engine + * Description: compile-time version information for the XSLT engine * this module is autogenerated. * * Copy: See Copyright for the status of this software. diff --git a/dll/3rdparty/libxslt/xsltutils.c b/dll/3rdparty/libxslt/xsltutils.c index 1b576489ce3..ab65c0ad2dd 100644 --- a/dll/3rdparty/libxslt/xsltutils.c +++ b/dll/3rdparty/libxslt/xsltutils.c @@ -1438,7 +1438,7 @@ xsltSaveResultTo(xmlOutputBufferPtr buf, xmlDocPtr result, ((style->method == NULL) || (!xmlStrEqual(style->method, (const xmlChar *) "xhtml")))) { xsltGenericError(xsltGenericErrorContext, - "xsltSaveResultTo : unknown ouput method\n"); + "xsltSaveResultTo : unknown output method\n"); return(-1); } @@ -1766,7 +1766,7 @@ xsltSaveResultToString(xmlChar **doc_txt_ptr, int * doc_txt_len, /************************************************************************ * * - * Generating profiling informations * + * Generating profiling information * * * ************************************************************************/ @@ -1929,9 +1929,9 @@ pretty_templ_match(xsltTemplatePtr templ) { /** * xsltSaveProfiling: * @ctxt: an XSLT context - * @output: a FILE * for saving the informations + * @output: a FILE * for saving the information * - * Save the profiling informations on @output + * Save the profiling information on @output */ void xsltSaveProfiling(xsltTransformContextPtr ctxt, FILE *output) { @@ -2128,7 +2128,7 @@ xsltSaveProfiling(xsltTransformContextPtr ctxt, FILE *output) { /************************************************************************ * * - * Fetching profiling informations * + * Fetching profiling information * * * ************************************************************************/ @@ -2137,8 +2137,8 @@ xsltSaveProfiling(xsltTransformContextPtr ctxt, FILE *output) { * @ctxt: a transformation context * * This function should be called after the transformation completed - * to extract template processing profiling informations if availble. - * The informations are returned as an XML document tree like + * to extract template processing profiling information if available. + * The information is returned as an XML document tree like * * *