Skip to content

Expat version check in #defines incorrect. #3518

@cptspacemanspiff

Description

@cptspacemanspiff

Hello there is a bug in the #if statements statements for poco, when building unbundled against older versions of expat.h.

specifically, XML_ERROR_INVALID_ARGUMENT was introduced in expat 2.2.1 and the #if statements check for 2.1.

here is a .patch I have against 1.11.0 with a fix:

diff -ru poco-poco-1.11.0-release-orig/XML/src/ParserEngine.cpp poco-poco-1.11.0-release/XML/src/ParserEngine.cpp
--- poco-poco-1.11.0-release-orig/XML/src/ParserEngine.cpp	2022-02-07 19:31:35.673783363 +0000
+++ poco-poco-1.11.0-release/XML/src/ParserEngine.cpp	2022-02-07 19:31:52.325782439 +0000
@@ -604,7 +604,7 @@
 			throw SAXParseException("Reserved prefix 'xmlns' must not be declared or undeclared", locator());
 		case XML_ERROR_RESERVED_NAMESPACE_URI:
 			throw SAXParseException("Prefix must not be bound to one of the reserved namespace names", locator());
-	#if XML_MAJOR_VERSION > 2 || XML_MINOR_VERSION >= 1
+	#if XML_MAJOR_VERSION > 2 || (XML_MINOR_VERSION >= 2 && XML_MICRO_VERSION >= 1)
 		case XML_ERROR_INVALID_ARGUMENT:
 			throw SAXParseException("Invalid argument", locator());
 	#endif

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions