From 19da1718e515ebd52e53a011217cfea864135bb0 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sun, 20 Nov 2022 10:43:32 -0500 Subject: [PATCH] [LIBXSLT] Update to version 1.1.37. CORE-17766 --- dll/3rdparty/libxslt/Makefile.am | 15 ++++++------- dll/3rdparty/libxslt/NEWS | 14 ++++++++++++ dll/3rdparty/libxslt/functions.c | 12 ++++++---- dll/3rdparty/libxslt/keys.c | 2 +- dll/3rdparty/libxslt/numbers.c | 14 ++++++++---- dll/3rdparty/libxslt/pattern.c | 22 +++++++++---------- dll/3rdparty/libxslt/transform.c | 4 ++-- media/doc/3rd Party Files.txt | 2 +- sdk/include/reactos/libs/libxslt/xsltconfig.h | 6 ++--- 9 files changed, 57 insertions(+), 34 deletions(-) diff --git a/dll/3rdparty/libxslt/Makefile.am b/dll/3rdparty/libxslt/Makefile.am index d5d6a4cfe93..a2d766f5653 100644 --- a/dll/3rdparty/libxslt/Makefile.am +++ b/dll/3rdparty/libxslt/Makefile.am @@ -12,17 +12,15 @@ confexec_DATA = xsltConf.sh bin_SCRIPTS = xslt-config -dist-hook: cleanup libxslt.spec +dist-hook: cleanup touch $(distdir)/doc/*.xml touch $(distdir)/doc/EXSLT/*.xml touch $(distdir)/libxslt/*.syms (cd $(srcdir) ; tar -cf - win32 vms examples) | (cd $(distdir); tar xf -) -EXTRA_DIST = xsltConf.sh.in xslt-config.in libxslt.spec libxslt.spec.in \ - FEATURES TODO Copyright libxslt.m4 \ - win32/libxslt/libxslt.def win32/libxslt/libxslt.dsw \ - win32/libxslt/libxslt_so.dsp win32/libxslt/xsltproc.dsp \ - CMakeLists.txt config.h.cmake.in FindGcrypt.cmake libxslt-config.cmake.in libxslt-config.cmake.cmake.in +EXTRA_DIST = xsltConf.sh.in \ + FEATURES TODO Copyright \ + CMakeLists.txt config.h.cmake.in libxslt-config.cmake.in libxslt-config.cmake.cmake.in ## We create xsltConf.sh here and not from configure because we want ## to get the paths expanded correctly. Macros like srcdir are given @@ -73,8 +71,9 @@ pkgconfigdir=$(libdir)/pkgconfig pkgconfig_DATA = libxslt.pc libexslt.pc cmakedir = $(libdir)/cmake/libxslt -cmake_DATA = FindGcrypt.cmake libxslt-config.cmake +dist_cmake_DATA = FindGcrypt.cmake +cmake_DATA = libxslt-config.cmake m4datadir = $(datadir)/aclocal -m4data_DATA = libxslt.m4 +dist_m4data_DATA = libxslt.m4 diff --git a/dll/3rdparty/libxslt/NEWS b/dll/3rdparty/libxslt/NEWS index 0f2dcd73710..dc97c2ca621 100644 --- a/dll/3rdparty/libxslt/NEWS +++ b/dll/3rdparty/libxslt/NEWS @@ -1,5 +1,19 @@ NEWS file for libxslt +v1.1.37: Aug 29 2022 + +### Improvements + +- Don't use deprecated libxml2 macros +- Don't mess with xmlDefaultSAXHandler + +### Build system + +- Require automake-1.16.3 or later +- Remove generated files from distribution +- Add missing compile definition for static builds to Autotools (Mike Dalessio) + + v1.1.36: Aug 17 2022 ### Removals and deprecations diff --git a/dll/3rdparty/libxslt/functions.c b/dll/3rdparty/libxslt/functions.c index a053c1ce65d..5cd1b7c285d 100644 --- a/dll/3rdparty/libxslt/functions.c +++ b/dll/3rdparty/libxslt/functions.c @@ -587,7 +587,8 @@ xsltFormatNumberFunction(xmlXPathParserContextPtr ctxt, int nargs) switch (nargs) { case 3: - CAST_TO_STRING; + if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING)) + xmlXPathStringFunction(ctxt, 1); decimalObj = valuePop(ctxt); ncname = xsltSplitQName(sheet->dict, decimalObj->stringval, &prefix); if (prefix != NULL) { @@ -613,13 +614,16 @@ xsltFormatNumberFunction(xmlXPathParserContextPtr ctxt, int nargs) } /* Intentional fall-through */ case 2: - CAST_TO_STRING; + if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING)) + xmlXPathStringFunction(ctxt, 1); formatObj = valuePop(ctxt); - CAST_TO_NUMBER; + if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_NUMBER)) + xmlXPathNumberFunction(ctxt, 1); numberObj = valuePop(ctxt); break; default: - XP_ERROR(XPATH_INVALID_ARITY); + xmlXPathErr(ctxt, XPATH_INVALID_ARITY); + return; } if (formatValues != NULL) { diff --git a/dll/3rdparty/libxslt/keys.c b/dll/3rdparty/libxslt/keys.c index 4215cb38e85..25adeb260f0 100644 --- a/dll/3rdparty/libxslt/keys.c +++ b/dll/3rdparty/libxslt/keys.c @@ -292,7 +292,7 @@ xsltAddKey(xsltStylesheetPtr style, const xmlChar *name, current = end = 0; while (match[current] != 0) { start = current; - while (IS_BLANK_CH(match[current])) + while (xmlIsBlank_ch(match[current])) current++; end = current; while ((match[end] != 0) && (match[end] != '|')) { diff --git a/dll/3rdparty/libxslt/numbers.c b/dll/3rdparty/libxslt/numbers.c index eee53d56227..d737221ec8c 100644 --- a/dll/3rdparty/libxslt/numbers.c +++ b/dll/3rdparty/libxslt/numbers.c @@ -75,6 +75,12 @@ xsltUTF8Charcmp(xmlChar *utf1, xmlChar *utf2) { return xmlStrncmp(utf1, utf2, len); } +static int +xsltIsLetterDigit(int val) { + return xmlIsBaseCharQ(val) || xmlIsIdeographicQ(val) || + xmlIsDigitQ(val); +} + /***** Stop temp insert *****/ /************************************************************************ * * @@ -330,8 +336,8 @@ xsltNumberFormatTokenize(const xmlChar *format, * Insert initial non-alphanumeric token. * There is always such a token in the list, even if NULL */ - while (! (IS_LETTER(val=xmlStringCurrentChar(NULL, format+ix, &len)) || - IS_DIGIT(val)) ) { + while (!xsltIsLetterDigit(val = xmlStringCurrentChar(NULL, format+ix, + &len))) { if (format[ix] == 0) /* if end of format string */ break; /* while */ ix += len; @@ -397,7 +403,7 @@ xsltNumberFormatTokenize(const xmlChar *format, * to correspond to the Letter and Digit classes from XML (and * one wonders why XSLT doesn't refer to these instead). */ - while (IS_LETTER(val) || IS_DIGIT(val)) { + while (xsltIsLetterDigit(val)) { ix += len; val = xmlStringCurrentChar(NULL, format+ix, &len); } @@ -406,7 +412,7 @@ xsltNumberFormatTokenize(const xmlChar *format, * Insert temporary non-alphanumeric final tooken. */ j = ix; - while (! (IS_LETTER(val) || IS_DIGIT(val))) { + while (!xsltIsLetterDigit(val)) { if (val == 0) break; /* while */ ix += len; diff --git a/dll/3rdparty/libxslt/pattern.c b/dll/3rdparty/libxslt/pattern.c index 91f5eed4201..0faf1431b43 100644 --- a/dll/3rdparty/libxslt/pattern.c +++ b/dll/3rdparty/libxslt/pattern.c @@ -1173,7 +1173,7 @@ xsltCompMatchClearCache(xsltTransformContextPtr ctxt, xsltCompMatchPtr comp) { #define CUR_PTR ctxt->cur #define SKIP_BLANKS \ - while (IS_BLANK_CH(CUR)) NEXT + while (xmlIsBlank_ch(CUR)) NEXT #define CURRENT (*ctxt->cur) #define NEXT ((*ctxt->cur) ? ctxt->cur++: ctxt->cur) @@ -1216,11 +1216,11 @@ xsltScanLiteral(xsltParserContextPtr ctxt) { NEXT; cur = q = CUR_PTR; val = xmlStringCurrentChar(NULL, cur, &len); - while ((IS_CHAR(val)) && (val != '"')) { + while ((xmlIsCharQ(val)) && (val != '"')) { cur += len; val = xmlStringCurrentChar(NULL, cur, &len); } - if (!IS_CHAR(val)) { + if (!xmlIsCharQ(val)) { ctxt->error = 1; return(NULL); } else { @@ -1232,11 +1232,11 @@ xsltScanLiteral(xsltParserContextPtr ctxt) { NEXT; cur = q = CUR_PTR; val = xmlStringCurrentChar(NULL, cur, &len); - while ((IS_CHAR(val)) && (val != '\'')) { + while ((xmlIsCharQ(val)) && (val != '\'')) { cur += len; val = xmlStringCurrentChar(NULL, cur, &len); } - if (!IS_CHAR(val)) { + if (!xmlIsCharQ(val)) { ctxt->error = 1; return(NULL); } else { @@ -1245,7 +1245,6 @@ xsltScanLiteral(xsltParserContextPtr ctxt) { cur += len; CUR_PTR = cur; } else { - /* XP_ERROR(XPATH_START_LITERAL_ERROR); */ ctxt->error = 1; return(NULL); } @@ -1271,14 +1270,15 @@ xsltScanNCName(xsltParserContextPtr ctxt) { cur = q = CUR_PTR; val = xmlStringCurrentChar(NULL, cur, &len); - if (!IS_LETTER(val) && (val != '_')) + if (!xmlIsBaseCharQ(val) && !xmlIsIdeographicQ(val) && (val != '_')) return(NULL); - while ((IS_LETTER(val)) || (IS_DIGIT(val)) || + while (xmlIsBaseCharQ(val) || xmlIsIdeographicQ(val) || + xmlIsDigitQ(val) || (val == '.') || (val == '-') || (val == '_') || - (IS_COMBINING(val)) || - (IS_EXTENDER(val))) { + xmlIsCombiningQ(val) || + xmlIsExtenderQ(val)) { cur += len; val = xmlStringCurrentChar(NULL, cur, &len); } @@ -1834,7 +1834,7 @@ xsltCompilePatternInternal(const xmlChar *pattern, xmlDocPtr doc, current = end = 0; while (pattern[current] != 0) { start = current; - while (IS_BLANK_CH(pattern[current])) + while (xmlIsBlank_ch(pattern[current])) current++; end = current; level = 0; diff --git a/dll/3rdparty/libxslt/transform.c b/dll/3rdparty/libxslt/transform.c index 86184091bcc..56391b43fa4 100644 --- a/dll/3rdparty/libxslt/transform.c +++ b/dll/3rdparty/libxslt/transform.c @@ -3602,12 +3602,12 @@ xsltDocumentElem(xsltTransformContextPtr ctxt, xmlNodePtr node, element = elements; while (*element != 0) { - while (IS_BLANK_CH(*element)) + while (xmlIsBlank_ch(*element)) element++; if (*element == 0) break; end = element; - while ((*end != 0) && (!IS_BLANK_CH(*end))) + while ((*end != 0) && (!xmlIsBlank_ch(*end))) end++; element = xmlStrndup(element, end - element); if (element) { diff --git a/media/doc/3rd Party Files.txt b/media/doc/3rd Party Files.txt index 19ff836c6f7..c9d57484dcf 100644 --- a/media/doc/3rd Party Files.txt +++ b/media/doc/3rd Party Files.txt @@ -45,7 +45,7 @@ URL: http://www.simplesystems.org/libtiff/ Title: Libxslt Path: dll/3rdparty/libxslt -Used Version: 1.1.36 +Used Version: 1.1.37 License: MIT (https://spdx.org/licenses/MIT.html) URL: http://xmlsoft.org diff --git a/sdk/include/reactos/libs/libxslt/xsltconfig.h b/sdk/include/reactos/libs/libxslt/xsltconfig.h index 8b129d75e50..d999422437c 100644 --- a/sdk/include/reactos/libs/libxslt/xsltconfig.h +++ b/sdk/include/reactos/libs/libxslt/xsltconfig.h @@ -20,21 +20,21 @@ extern "C" { * * the version string like "1.2.3" */ -#define LIBXSLT_DOTTED_VERSION "1.1.36" +#define LIBXSLT_DOTTED_VERSION "1.1.37" /** * LIBXSLT_VERSION: * * the version number: 1.2.3 value is 10203 */ -#define LIBXSLT_VERSION 10136 +#define LIBXSLT_VERSION 10137 /** * LIBXSLT_VERSION_STRING: * * the version number string, 1.2.3 value is "10203" */ -#define LIBXSLT_VERSION_STRING "10136" +#define LIBXSLT_VERSION_STRING "10137" /** * LIBXSLT_VERSION_EXTRA: