146 lines
4.6 KiB
Diff
146 lines
4.6 KiB
Diff
From 49471812d57adfb22dcce3cbea1a8956658731b9 Mon Sep 17 00:00:00 2001
|
|
From: Kjell Ahlstedt <kjellahlstedt@gmail.com>
|
|
Date: Sat, 18 Nov 2023 18:34:07 +0100
|
|
Subject: [PATCH] Make it compatible with libxml2 >= 2.12.0
|
|
|
|
* libxml++/document.cc:
|
|
* libxml++/dtd.cc:
|
|
* libxml++/nodes/entitydeclaration.cc:
|
|
* libxml++/nodes/entityreference.cc:
|
|
* libxml++/validators/relaxngvalidator.cc: Modify #include directives.
|
|
* libxml++/keepblanks.cc: Ignore deprecation of xmlKeepBlanksDefault().
|
|
* tests/saxparser_chunk_parsing_inconsistent_state/main.cc:
|
|
Accept that MySaxParser::on_start_document() can be called before
|
|
MySaxParser::on_error().
|
|
|
|
Upstream: https://github.com/libxmlplusplus/libxmlplusplus/commit/49471812d57adfb22dcce3cbea1a8956658731b9
|
|
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
|
---
|
|
libxml++/document.cc | 1 +
|
|
libxml++/dtd.cc | 2 +-
|
|
libxml++/keepblanks.cc | 5 ++++-
|
|
libxml++/nodes/entitydeclaration.cc | 2 +-
|
|
libxml++/nodes/entityreference.cc | 2 +-
|
|
libxml++/validators/relaxngvalidator.cc | 1 +
|
|
.../saxparser_chunk_parsing_inconsistent_state/main.cc | 10 +++++++++-
|
|
7 files changed, 18 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/libxml++/document.cc b/libxml++/document.cc
|
|
index da0a8f5..d5476c6 100644
|
|
--- a/libxml++/document.cc
|
|
+++ b/libxml++/document.cc
|
|
@@ -16,6 +16,7 @@
|
|
|
|
#include <libxml/tree.h>
|
|
#include <libxml/xinclude.h>
|
|
+#include <libxml/xmlsave.h>
|
|
#include <libxml/parser.h> // XML_PARSE_NOXINCNODE, XML_PARSE_NOBASEFIX
|
|
|
|
#include <iostream>
|
|
diff --git a/libxml++/dtd.cc b/libxml++/dtd.cc
|
|
index 238b3a0..8014c07 100644
|
|
--- a/libxml++/dtd.cc
|
|
+++ b/libxml++/dtd.cc
|
|
@@ -8,7 +8,7 @@
|
|
#include <libxml++/exceptions/parse_error.h>
|
|
#include <libxml++/io/istreamparserinputbuffer.h>
|
|
|
|
-#include <libxml/tree.h>
|
|
+#include <libxml/parser.h>
|
|
|
|
#include <sstream>
|
|
|
|
diff --git a/libxml++/keepblanks.cc b/libxml++/keepblanks.cc
|
|
index 4228b8d..56b00cf 100644
|
|
--- a/libxml++/keepblanks.cc
|
|
+++ b/libxml++/keepblanks.cc
|
|
@@ -5,8 +5,11 @@
|
|
* included with libxml++ as the file COPYING.
|
|
*/
|
|
|
|
-#include <libxml++/keepblanks.h>
|
|
+// xmlKeepBlanksDefault() is deprecated since libxml2 2.12.0.
|
|
+// Ignore deprecations here.
|
|
+#define XML_DEPRECATED
|
|
|
|
+#include <libxml++/keepblanks.h>
|
|
#include <libxml/globals.h>
|
|
|
|
namespace xmlpp
|
|
diff --git a/libxml++/nodes/entitydeclaration.cc b/libxml++/nodes/entitydeclaration.cc
|
|
index 0a6390e..d5bfa75 100644
|
|
--- a/libxml++/nodes/entitydeclaration.cc
|
|
+++ b/libxml++/nodes/entitydeclaration.cc
|
|
@@ -5,7 +5,7 @@
|
|
*/
|
|
|
|
#include <libxml++/nodes/entitydeclaration.h>
|
|
-#include <libxml/tree.h>
|
|
+#include <libxml/entities.h>
|
|
|
|
namespace xmlpp
|
|
{
|
|
diff --git a/libxml++/nodes/entityreference.cc b/libxml++/nodes/entityreference.cc
|
|
index 19b1b22..278a126 100644
|
|
--- a/libxml++/nodes/entityreference.cc
|
|
+++ b/libxml++/nodes/entityreference.cc
|
|
@@ -6,7 +6,7 @@
|
|
|
|
#include <libxml++/nodes/entityreference.h>
|
|
|
|
-#include <libxml/tree.h>
|
|
+#include <libxml/entities.h>
|
|
|
|
namespace xmlpp
|
|
{
|
|
diff --git a/libxml++/validators/relaxngvalidator.cc b/libxml++/validators/relaxngvalidator.cc
|
|
index 9bb10c2..68a814c 100644
|
|
--- a/libxml++/validators/relaxngvalidator.cc
|
|
+++ b/libxml++/validators/relaxngvalidator.cc
|
|
@@ -22,6 +22,7 @@
|
|
#include "libxml++/parsers/domparser.h"
|
|
#include "libxml++/relaxngschema.h"
|
|
|
|
+#include <libxml/tree.h>
|
|
#include <libxml/relaxng.h>
|
|
|
|
namespace xmlpp
|
|
diff --git a/tests/saxparser_chunk_parsing_inconsistent_state/main.cc b/tests/saxparser_chunk_parsing_inconsistent_state/main.cc
|
|
index 07cc3ef..53f55b3 100644
|
|
--- a/tests/saxparser_chunk_parsing_inconsistent_state/main.cc
|
|
+++ b/tests/saxparser_chunk_parsing_inconsistent_state/main.cc
|
|
@@ -24,10 +24,14 @@
|
|
|
|
class MySaxParser : public xmlpp::SaxParser
|
|
{
|
|
+public:
|
|
+ bool throw_on_start_doc = true;
|
|
+
|
|
protected:
|
|
void on_start_document() override
|
|
{
|
|
- throw std::runtime_error("some custom runtime exception");
|
|
+ if (throw_on_start_doc)
|
|
+ throw std::runtime_error("some custom runtime exception");
|
|
}
|
|
void on_error(const xmlpp::ustring& /* text */) override
|
|
{
|
|
@@ -43,6 +47,9 @@ int main()
|
|
bool exceptionThrown = false;
|
|
try
|
|
{
|
|
+ // Depending on the libxml2 version, MySaxParser::on_start_document()
|
|
+ // may or may not be called before MySaxParser::on_error().
|
|
+ parser.throw_on_start_doc = false;
|
|
parser.parse_chunk("<?");
|
|
parser.finish_chunk_parsing();
|
|
}
|
|
@@ -61,6 +68,7 @@ int main()
|
|
exceptionThrown = false;
|
|
try
|
|
{
|
|
+ parser.throw_on_start_doc = true;
|
|
std::stringstream ss("<root></root>");
|
|
parser.parse_stream(ss);
|
|
}
|