[LIBXSLT] Update to version 1.1.33. CORE-15280

This commit is contained in:
Thomas Faber 2019-01-05 18:34:29 +01:00
parent 5bb277a54b
commit af4421c39a
No known key found for this signature in database
GPG key ID: 076E7C3D44720826
24 changed files with 288 additions and 233 deletions

View file

@ -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);
}