mirror of
https://github.com/gshang2017/docker.git
synced 2025-07-25 16:05:14 +00:00
84 lines
3.0 KiB
Diff
84 lines
3.0 KiB
Diff
From 29e25a6b1eb1b77ecfdbcb5b8dc07c8a6cdcf089 Mon Sep 17 00:00:00 2001
|
|
From: Tom Lane <tgl@sss.pgh.pa.us>
|
|
Date: Mon, 29 Jan 2024 12:06:08 -0500
|
|
Subject: [PATCH] Fix incompatibilities with libxml2 >= 2.12.0.
|
|
|
|
libxml2 changed the required signature of error handler callbacks
|
|
to make the passed xmlError struct "const". This is causing build
|
|
failures on buildfarm member caiman, and no doubt will start showing
|
|
up in the field quite soon. Add a version check to adjust the
|
|
declaration of xml_errorHandler() according to LIBXML_VERSION.
|
|
|
|
2.12.x also produces deprecation warnings for contrib/xml2/xpath.c's
|
|
assignment to xmlLoadExtDtdDefaultValue. I see no good reason for
|
|
that to still be there, seeing that we disabled external DTDs (at a
|
|
lower level) years ago for security reasons. Let's just remove it.
|
|
|
|
Back-patch to all supported branches, since they might all get built
|
|
with newer libxml2 once it gets a bit more popular. (The back
|
|
branches produce another deprecation warning about xpath.c's use of
|
|
xmlSubstituteEntitiesDefault(). We ought to consider whether to
|
|
back-patch all or part of commit 65c5864d7 to silence that. It's
|
|
less urgent though, since it won't break the buildfarm.)
|
|
|
|
Discussion: https://postgr.es/m/1389505.1706382262@sss.pgh.pa.us
|
|
---
|
|
contrib/xml2/xpath.c | 1 -
|
|
src/backend/utils/adt/xml.c | 14 ++++++++++++--
|
|
2 files changed, 12 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/contrib/xml2/xpath.c b/contrib/xml2/xpath.c
|
|
index 1e5b71d9a0..f44caf0020 100644
|
|
--- a/contrib/xml2/xpath.c
|
|
+++ b/contrib/xml2/xpath.c
|
|
@@ -75,7 +75,6 @@ pgxml_parser_init(PgXmlStrictness strictness)
|
|
xmlInitParser();
|
|
|
|
xmlSubstituteEntitiesDefault(1);
|
|
- xmlLoadExtDtdDefaultValue = 1;
|
|
|
|
return xmlerrcxt;
|
|
}
|
|
diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c
|
|
index df7a1b6c40..d7caaaaca0 100644
|
|
--- a/src/backend/utils/adt/xml.c
|
|
+++ b/src/backend/utils/adt/xml.c
|
|
@@ -65,6 +65,16 @@
|
|
#if LIBXML_VERSION >= 20704
|
|
#define HAVE_XMLSTRUCTUREDERRORCONTEXT 1
|
|
#endif
|
|
+
|
|
+/*
|
|
+ * libxml2 2.12 decided to insert "const" into the error handler API.
|
|
+ */
|
|
+#if LIBXML_VERSION >= 21200
|
|
+#define PgXmlErrorPtr const xmlError *
|
|
+#else
|
|
+#define PgXmlErrorPtr xmlErrorPtr
|
|
+#endif
|
|
+
|
|
#endif /* USE_LIBXML */
|
|
|
|
#include "access/htup_details.h"
|
|
@@ -119,7 +129,7 @@ struct PgXmlErrorContext
|
|
|
|
static xmlParserInputPtr xmlPgEntityLoader(const char *URL, const char *ID,
|
|
xmlParserCtxtPtr ctxt);
|
|
-static void xml_errorHandler(void *data, xmlErrorPtr error);
|
|
+static void xml_errorHandler(void *data, PgXmlErrorPtr error);
|
|
static void xml_ereport_by_code(int level, int sqlcode,
|
|
const char *msg, int errcode);
|
|
static void chopStringInfoNewlines(StringInfo str);
|
|
@@ -1750,7 +1760,7 @@ xml_ereport(PgXmlErrorContext *errcxt, int level, int sqlcode, const char *msg)
|
|
* Error handler for libxml errors and warnings
|
|
*/
|
|
static void
|
|
-xml_errorHandler(void *data, xmlErrorPtr error)
|
|
+xml_errorHandler(void *data, PgXmlErrorPtr error)
|
|
{
|
|
PgXmlErrorContext *xmlerrcxt = (PgXmlErrorContext *) data;
|
|
xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) error->ctxt;
|
|
--
|
|
2.30.2
|
|
|