ports/textproc/php81-xml/files/patch-compat.c
Dima Panov a8592eb737
textproc/php81-xml: fix compatibility with libxml2>=2.13
Fix compatibility issue with libxml2>=2.13 which caused parse error
on some XML files so that devel/pear work again with php81.

See https://github.com/php/php-src/issues/14834 for details.

Approved by:	portmgr blanket (backport trivial fix from upstream)
2025-10-28 00:17:53 +03:00

25 lines
1.2 KiB
C

--- compat.c.orig 2025-07-01 21:17:52 UTC
+++ compat.c
@@ -14,6 +14,10 @@
+----------------------------------------------------------------------+
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include "php.h"
#if defined(HAVE_LIBXML) && (defined(HAVE_XML) || defined(HAVE_XMLRPC)) && !defined(HAVE_LIBEXPAT)
#include "expat_compat.h"
@@ -375,7 +379,9 @@ _get_entity(void *user, const xmlChar *name)
if (ret == NULL)
ret = xmlGetDocEntity(parser->parser->myDoc, name);
- if (ret == NULL || (parser->parser->instate != XML_PARSER_ENTITY_VALUE && parser->parser->instate != XML_PARSER_ATTRIBUTE_VALUE)) {
+/* Fix parse error on some XML files so that devel/pear work again. */
+/* See https://github.com/php/php-src/issues/14834 for details. */
+ if (ret == NULL || parser->parser->instate == XML_PARSER_CONTENT) {
if (ret == NULL || ret->etype == XML_INTERNAL_GENERAL_ENTITY || ret->etype == XML_INTERNAL_PARAMETER_ENTITY || ret->etype == XML_INTERNAL_PREDEFINED_ENTITY) {
/* Predefined entities will expand unless no cdata handler is present */
if (parser->h_default && ! (ret && ret->etype == XML_INTERNAL_PREDEFINED_ENTITY && parser->h_cdata)) {