libxml2: update to 2.12.6.
This commit is contained in:
parent
3d25066dee
commit
dcf44339af
|
@ -1,98 +0,0 @@
|
|||
From 0b5650067b4ba37dc0dc1a889a17e96dc1610799 Mon Sep 17 00:00:00 2001
|
||||
From: Nick Wellnhofer <wellnhofer@aevum.de>
|
||||
Date: Mon, 26 Feb 2024 01:03:34 +0100
|
||||
Subject: [PATCH] html: Fix htmlCreatePushParserCtxt with encoding
|
||||
|
||||
Regression from commit ec7be506.
|
||||
|
||||
Fixes #696.
|
||||
---
|
||||
HTMLparser.c | 5 ++++-
|
||||
testparser.c | 34 ++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 38 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/HTMLparser.c b/HTMLparser.c
|
||||
index 097ed2369..ea6a4f265 100644
|
||||
--- a/HTMLparser.c
|
||||
+++ b/HTMLparser.c
|
||||
@@ -5987,7 +5987,7 @@ htmlCreatePushParserCtxt(htmlSAXHandlerPtr sax, void *user_data,
|
||||
|
||||
xmlInitParser();
|
||||
|
||||
- buf = xmlAllocParserInputBuffer(enc);
|
||||
+ buf = xmlAllocParserInputBuffer(XML_CHAR_ENCODING_NONE);
|
||||
if (buf == NULL) return(NULL);
|
||||
|
||||
ctxt = htmlNewSAXParserCtxt(sax, user_data);
|
||||
@@ -6018,6 +6018,9 @@ htmlCreatePushParserCtxt(htmlSAXHandlerPtr sax, void *user_data,
|
||||
|
||||
inputPush(ctxt, inputStream);
|
||||
|
||||
+ if (enc != XML_CHAR_ENCODING_NONE)
|
||||
+ xmlSwitchEncoding(ctxt, enc);
|
||||
+
|
||||
if ((size > 0) && (chunk != NULL) && (ctxt->input != NULL) &&
|
||||
(ctxt->input->buf != NULL)) {
|
||||
size_t pos = ctxt->input->cur - ctxt->input->base;
|
||||
diff --git a/testparser.c b/testparser.c
|
||||
index e67cea5b1..705e61387 100644
|
||||
--- a/testparser.c
|
||||
+++ b/testparser.c
|
||||
@@ -5,6 +5,7 @@
|
||||
*/
|
||||
|
||||
#include <libxml/parser.h>
|
||||
+#include <libxml/HTMLparser.h>
|
||||
|
||||
static int
|
||||
testStandaloneWithEncoding(void) {
|
||||
@@ -86,6 +87,36 @@ testHugeEncodedChunk(void) {
|
||||
}
|
||||
#endif
|
||||
|
||||
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_PUSH_ENABLED)
|
||||
+static int
|
||||
+testHtmlPushWithEncoding(void) {
|
||||
+ htmlParserCtxtPtr ctxt;
|
||||
+ htmlDocPtr doc;
|
||||
+ htmlNodePtr node;
|
||||
+ int err = 0;
|
||||
+
|
||||
+ ctxt = htmlCreatePushParserCtxt(NULL, NULL, NULL, 0, NULL,
|
||||
+ XML_CHAR_ENCODING_UTF8);
|
||||
+ htmlParseChunk(ctxt, "-\xC3\xA4-", 4, 1);
|
||||
+
|
||||
+ doc = ctxt->myDoc;
|
||||
+ if (!xmlStrEqual(doc->encoding, BAD_CAST "UTF-8")) {
|
||||
+ fprintf(stderr, "testHtmlPushWithEncoding failed\n");
|
||||
+ err = 1;
|
||||
+ }
|
||||
+
|
||||
+ node = xmlDocGetRootElement(doc)->children->children->children;
|
||||
+ if (!xmlStrEqual(node->content, BAD_CAST "-\xC3\xA4-")) {
|
||||
+ fprintf(stderr, "testHtmlPushWithEncoding failed\n");
|
||||
+ err = 1;
|
||||
+ }
|
||||
+
|
||||
+ xmlFreeDoc(doc);
|
||||
+ htmlFreeParserCtxt(ctxt);
|
||||
+ return err;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
int
|
||||
main(void) {
|
||||
int err = 0;
|
||||
@@ -95,6 +126,9 @@ main(void) {
|
||||
err |= testHugePush();
|
||||
err |= testHugeEncodedChunk();
|
||||
#endif
|
||||
+#if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_PUSH_ENABLED)
|
||||
+ err |= testHtmlPushWithEncoding();
|
||||
+#endif
|
||||
|
||||
return err;
|
||||
}
|
||||
--
|
||||
GitLab
|
||||
|
|
@ -1,85 +0,0 @@
|
|||
From 387a952bdb7a4364100f009043e94e1bf44c6197 Mon Sep 17 00:00:00 2001
|
||||
From: Nick Wellnhofer <wellnhofer@aevum.de>
|
||||
Date: Mon, 12 Feb 2024 16:45:16 +0100
|
||||
Subject: [PATCH] xmllint: Return error code if XPath returns empty nodeset
|
||||
|
||||
Return an error code as before but make it possible to distinguish from
|
||||
real errors.
|
||||
|
||||
Fixes #690.
|
||||
---
|
||||
doc/xmllint.xml | 11 ++++++++++-
|
||||
xmllint.c | 24 +++++++++++++-----------
|
||||
2 files changed, 23 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/doc/xmllint.xml b/doc/xmllint.xml
|
||||
index b81da3aa7..8bc665216 100644
|
||||
--- a/doc/xmllint.xml
|
||||
+++ b/doc/xmllint.xml
|
||||
@@ -575,7 +575,9 @@
|
||||
result. In case of a nodeset result, each node in the
|
||||
node set is serialized in full in the output. In case
|
||||
of an empty node set the "XPath set is empty" result
|
||||
- will be shown and an error exit code will be returned.
|
||||
+ will be shown and exit code 11 will be returned..
|
||||
+ This feature is EXPERIMENTAL. Implementation details can
|
||||
+ change without futher notice.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -945,6 +947,13 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
+ <varlistentry>
|
||||
+ <term><errorcode>11</errorcode></term>
|
||||
+ <listitem>
|
||||
+ <para>XPath result is empty</para>
|
||||
+ </listitem>
|
||||
+ </varlistentry>
|
||||
+
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
diff --git a/xmllint.c b/xmllint.c
|
||||
index 21dbe7d24..5c26c3fe8 100644
|
||||
--- a/xmllint.c
|
||||
+++ b/xmllint.c
|
||||
@@ -86,17 +86,18 @@
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
- XMLLINT_RETURN_OK = 0, /* No error */
|
||||
- XMLLINT_ERR_UNCLASS = 1, /* Unclassified */
|
||||
- XMLLINT_ERR_DTD = 2, /* Error in DTD */
|
||||
- XMLLINT_ERR_VALID = 3, /* Validation error */
|
||||
- XMLLINT_ERR_RDFILE = 4, /* CtxtReadFile error */
|
||||
- XMLLINT_ERR_SCHEMACOMP = 5, /* Schema compilation */
|
||||
- XMLLINT_ERR_OUT = 6, /* Error writing output */
|
||||
- XMLLINT_ERR_SCHEMAPAT = 7, /* Error in schema pattern */
|
||||
- XMLLINT_ERR_RDREGIS = 8, /* Error in Reader registration */
|
||||
- XMLLINT_ERR_MEM = 9, /* Out of memory error */
|
||||
- XMLLINT_ERR_XPATH = 10 /* XPath evaluation error */
|
||||
+ XMLLINT_RETURN_OK = 0, /* No error */
|
||||
+ XMLLINT_ERR_UNCLASS = 1, /* Unclassified */
|
||||
+ XMLLINT_ERR_DTD = 2, /* Error in DTD */
|
||||
+ XMLLINT_ERR_VALID = 3, /* Validation error */
|
||||
+ XMLLINT_ERR_RDFILE = 4, /* CtxtReadFile error */
|
||||
+ XMLLINT_ERR_SCHEMACOMP = 5, /* Schema compilation */
|
||||
+ XMLLINT_ERR_OUT = 6, /* Error writing output */
|
||||
+ XMLLINT_ERR_SCHEMAPAT = 7, /* Error in schema pattern */
|
||||
+ XMLLINT_ERR_RDREGIS = 8, /* Error in Reader registration */
|
||||
+ XMLLINT_ERR_MEM = 9, /* Out of memory error */
|
||||
+ XMLLINT_ERR_XPATH = 10, /* XPath evaluation error */
|
||||
+ XMLLINT_ERR_XPATH_EMPTY = 11 /* XPath result is empty */
|
||||
} xmllintReturnCode;
|
||||
#ifdef LIBXML_DEBUG_ENABLED
|
||||
static int shell = 0;
|
||||
@@ -2019,6 +2020,7 @@ static void doXPathDump(xmlXPathObjectPtr cur) {
|
||||
xmlOutputBufferPtr buf;
|
||||
|
||||
if ((cur->nodesetval == NULL) || (cur->nodesetval->nodeNr <= 0)) {
|
||||
+ progresult = XMLLINT_ERR_XPATH_EMPTY;
|
||||
if (!quiet) {
|
||||
fprintf(stderr, "XPath set is empty\n");
|
||||
}
|
|
@ -1,131 +0,0 @@
|
|||
From 4365a5e1153dd5ed7d269d00f8f14daee0fac5c8 Mon Sep 17 00:00:00 2001
|
||||
From: Nick Wellnhofer <wellnhofer@aevum.de>
|
||||
Date: Mon, 26 Feb 2024 15:14:28 +0100
|
||||
Subject: [PATCH] xmlreader: Fix xmlTextReaderConstEncoding
|
||||
|
||||
Regression from commit f1c1f5c6.
|
||||
|
||||
Fixes #697.
|
||||
---
|
||||
SAX2.c | 12 +-----------
|
||||
include/private/parser.h | 2 ++
|
||||
parserInternals.c | 24 ++++++++++++++++++++++++
|
||||
xmlreader.c | 22 ++++++++++------------
|
||||
4 files changed, 37 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/SAX2.c b/SAX2.c
|
||||
index ed21a559..bb72e160 100644
|
||||
--- a/SAX2.c
|
||||
+++ b/SAX2.c
|
||||
@@ -955,17 +955,7 @@ xmlSAX2EndDocument(void *ctx)
|
||||
|
||||
doc = ctxt->myDoc;
|
||||
if ((doc != NULL) && (doc->encoding == NULL)) {
|
||||
- const xmlChar *encoding = NULL;
|
||||
-
|
||||
- if ((ctxt->input->flags & XML_INPUT_USES_ENC_DECL) ||
|
||||
- (ctxt->input->flags & XML_INPUT_AUTO_ENCODING)) {
|
||||
- /* Preserve encoding exactly */
|
||||
- encoding = ctxt->encoding;
|
||||
- } else if ((ctxt->input->buf) && (ctxt->input->buf->encoder)) {
|
||||
- encoding = BAD_CAST ctxt->input->buf->encoder->name;
|
||||
- } else if (ctxt->input->flags & XML_INPUT_HAS_ENCODING) {
|
||||
- encoding = BAD_CAST "UTF-8";
|
||||
- }
|
||||
+ const xmlChar *encoding = xmlGetActualEncoding(ctxt);
|
||||
|
||||
if (encoding != NULL) {
|
||||
doc->encoding = xmlStrdup(encoding);
|
||||
diff --git a/include/private/parser.h b/include/private/parser.h
|
||||
index 40d179fe..7f8f6912 100644
|
||||
--- a/include/private/parser.h
|
||||
+++ b/include/private/parser.h
|
||||
@@ -48,6 +48,8 @@ XML_HIDDEN void
|
||||
xmlDetectEncoding(xmlParserCtxtPtr ctxt);
|
||||
XML_HIDDEN void
|
||||
xmlSetDeclaredEncoding(xmlParserCtxtPtr ctxt, xmlChar *encoding);
|
||||
+XML_HIDDEN const xmlChar *
|
||||
+xmlGetActualEncoding(xmlParserCtxtPtr ctxt);
|
||||
|
||||
XML_HIDDEN xmlParserNsData *
|
||||
xmlParserNsCreate(void);
|
||||
diff --git a/parserInternals.c b/parserInternals.c
|
||||
index e6b4cb14..166397bd 100644
|
||||
--- a/parserInternals.c
|
||||
+++ b/parserInternals.c
|
||||
@@ -1479,6 +1479,30 @@ xmlSetDeclaredEncoding(xmlParserCtxtPtr ctxt, xmlChar *encoding) {
|
||||
}
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * xmlGetActualEncoding:
|
||||
+ * @ctxt: the parser context
|
||||
+ *
|
||||
+ * Returns the actual used to parse the document. This can differ from
|
||||
+ * the declared encoding.
|
||||
+ */
|
||||
+const xmlChar *
|
||||
+xmlGetActualEncoding(xmlParserCtxtPtr ctxt) {
|
||||
+ const xmlChar *encoding = NULL;
|
||||
+
|
||||
+ if ((ctxt->input->flags & XML_INPUT_USES_ENC_DECL) ||
|
||||
+ (ctxt->input->flags & XML_INPUT_AUTO_ENCODING)) {
|
||||
+ /* Preserve encoding exactly */
|
||||
+ encoding = ctxt->encoding;
|
||||
+ } else if ((ctxt->input->buf) && (ctxt->input->buf->encoder)) {
|
||||
+ encoding = BAD_CAST ctxt->input->buf->encoder->name;
|
||||
+ } else if (ctxt->input->flags & XML_INPUT_HAS_ENCODING) {
|
||||
+ encoding = BAD_CAST "UTF-8";
|
||||
+ }
|
||||
+
|
||||
+ return(encoding);
|
||||
+}
|
||||
+
|
||||
/************************************************************************
|
||||
* *
|
||||
* Commodity functions to handle entities processing *
|
||||
diff --git a/xmlreader.c b/xmlreader.c
|
||||
index 1f903306..5fdeb2b8 100644
|
||||
--- a/xmlreader.c
|
||||
+++ b/xmlreader.c
|
||||
@@ -40,6 +40,7 @@
|
||||
#endif
|
||||
|
||||
#include "private/buf.h"
|
||||
+#include "private/parser.h"
|
||||
#include "private/tree.h"
|
||||
#ifdef LIBXML_XINCLUDE_ENABLED
|
||||
#include "private/xinclude.h"
|
||||
@@ -2795,20 +2796,17 @@ xmlTextReaderReadAttributeValue(xmlTextReaderPtr reader) {
|
||||
*/
|
||||
const xmlChar *
|
||||
xmlTextReaderConstEncoding(xmlTextReaderPtr reader) {
|
||||
- xmlDocPtr doc = NULL;
|
||||
+ const xmlChar *encoding = NULL;
|
||||
+
|
||||
if (reader == NULL)
|
||||
- return(NULL);
|
||||
- if (reader->doc != NULL)
|
||||
- doc = reader->doc;
|
||||
- else if (reader->ctxt != NULL)
|
||||
- doc = reader->ctxt->myDoc;
|
||||
- if (doc == NULL)
|
||||
- return(NULL);
|
||||
+ return(NULL);
|
||||
|
||||
- if (doc->encoding == NULL)
|
||||
- return(NULL);
|
||||
- else
|
||||
- return(CONSTSTR(doc->encoding));
|
||||
+ if (reader->ctxt != NULL)
|
||||
+ encoding = xmlGetActualEncoding(reader->ctxt);
|
||||
+ else if (reader->doc != NULL)
|
||||
+ encoding = reader->doc->encoding;
|
||||
+
|
||||
+ return(CONSTSTR(encoding));
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
GitLab
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Template file for 'libxml2'
|
||||
pkgname=libxml2
|
||||
version=2.12.5
|
||||
version=2.12.6
|
||||
revision=1
|
||||
build_style=gnu-configure
|
||||
configure_args="--with-threads --with-history --with-icu
|
||||
|
@ -14,7 +14,7 @@ license="MIT"
|
|||
homepage="https://gitlab.gnome.org/GNOME/libxml2"
|
||||
changelog="https://gitlab.gnome.org/GNOME/libxml2/-/raw/master/NEWS"
|
||||
distfiles="${GNOME_SITE}/libxml2/${version%.*}/libxml2-${version}.tar.xz"
|
||||
checksum=a972796696afd38073e0f59c283c3a2f5a560b5268b4babc391b286166526b21
|
||||
checksum=889c593a881a3db5fdd96cc9318c87df34eb648edfc458272ad46fd607353fbb
|
||||
python_version=3
|
||||
CFLAGS="-I$XBPS_CROSS_BASE/usr/include/python$py3_ver"
|
||||
|
||||
|
|
Loading…
Reference in New Issue