https://git.reactos.org/?p=reactos.git;a=commitdiff;h=19da1718e515ebd52e53a011217cfea864135bb0

commit 19da1718e515ebd52e53a011217cfea864135bb0
Author:     Thomas Faber <thomas.fa...@reactos.org>
AuthorDate: Sun Nov 20 10:43:32 2022 -0500
Commit:     Thomas Faber <thomas.fa...@reactos.org>
CommitDate: Fri Nov 25 09:30:40 2022 -0500

    [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:

Reply via email to