From 7322eaaf8e002efafef87825e66d9ea775de80ad Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Mon, 15 Apr 2024 22:22:22 -0400 Subject: [PATCH] vtkXMLDataParser: track `AppendedData` state explicitly Bug-Debian: https://bugs.debian.org/1064762 Origin: upstream,https://gitlab.kitware.com/vtk/vtk/-/commit/3efa07ad277efe5c1d11a2ef2b907c095f68bbef Forwarded: not-needed Newer `libexpat` doesn't like being given the appended data after the artificially ended document anymore. Avoid pushing it through to its parser. Gbp-Pq: Name 09_newer_expat.patch --- IO/XMLParser/vtkXMLDataParser.cxx | 6 +++++- IO/XMLParser/vtkXMLDataParser.h | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/IO/XMLParser/vtkXMLDataParser.cxx b/IO/XMLParser/vtkXMLDataParser.cxx index 1f6006d3..7d38092f 100644 --- a/IO/XMLParser/vtkXMLDataParser.cxx +++ b/IO/XMLParser/vtkXMLDataParser.cxx @@ -36,6 +36,7 @@ vtkXMLDataParser::vtkXMLDataParser() this->RootElement = nullptr; this->AppendedDataPosition = 0; this->AppendedDataMatched = 0; + this->AppendedDataFound = false; this->DataStream = nullptr; this->InlineDataStream = vtkBase64InputStream::New(); this->AppendedDataStream = vtkBase64InputStream::New(); @@ -88,6 +89,7 @@ void vtkXMLDataParser::PrintSelf(ostream& os, vtkIndent indent) { this->Superclass::PrintSelf(os, indent); os << indent << "AppendedDataPosition: " << this->AppendedDataPosition << "\n"; + os << indent << "AppendedDataFound: " << this->AppendedDataFound << "\n"; if (this->RootElement) { this->RootElement->PrintXML(os, indent); @@ -214,7 +216,7 @@ int vtkXMLDataParser::ParsingComplete() // If we have reached the appended data section, we stop parsing. // This prevents the XML parser from having to walk over the entire // appended data section. - if (this->AppendedDataPosition) + if (this->AppendedDataPosition || this->AppendedDataFound) { return 1; } @@ -433,6 +435,8 @@ int vtkXMLDataParser::ParseBuffer(const char* buffer, unsigned int count) { return 0; } + + this->AppendedDataFound = true; } return 1; diff --git a/IO/XMLParser/vtkXMLDataParser.h b/IO/XMLParser/vtkXMLDataParser.h index 1504a4d4..142bf283 100644 --- a/IO/XMLParser/vtkXMLDataParser.h +++ b/IO/XMLParser/vtkXMLDataParser.h @@ -204,6 +204,9 @@ protected: // How much of the string "