mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 22:33:00 +00:00
[LIBXSLT] Update to version 1.1.33. CORE-15280
This commit is contained in:
parent
5bb277a54b
commit
af4421c39a
24 changed files with 288 additions and 233 deletions
90
dll/3rdparty/libxslt/extensions.c
vendored
90
dll/3rdparty/libxslt/extensions.c
vendored
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue