diff options
Diffstat (limited to 'src/KM_xml.cpp')
| -rw-r--r-- | src/KM_xml.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/KM_xml.cpp b/src/KM_xml.cpp index b7b8c09..4792e9b 100644 --- a/src/KM_xml.cpp +++ b/src/KM_xml.cpp @@ -683,6 +683,7 @@ Kumu::XMLElement::ParseString(const std::string& document) asdcp_init_xml_dom(); + int errorCount = 0; SAXParser* parser = new SAXParser(); parser->setDoValidation(true); parser->setDoNamespaces(true); // optional @@ -704,25 +705,28 @@ Kumu::XMLElement::ParseString(const std::string& document) char* message = XMLString::transcode(e.getMessage()); DefaultLogSink().Error("Parser error: %s\n", message); XMLString::release(&message); - return false; + errorCount++; } catch (const SAXParseException& e) { char* message = XMLString::transcode(e.getMessage()); DefaultLogSink().Error("Parser error: %s at line %d\n", message, e.getLineNumber()); XMLString::release(&message); - return false; + errorCount++; } catch (...) { DefaultLogSink().Error("Unexpected XML parser error\n"); - return false; + errorCount++; } - m_NamespaceOwner = (void*)docHandler->TakeNamespaceMap(); + if ( errorCount == 0 ) + m_NamespaceOwner = (void*)docHandler->TakeNamespaceMap(); + delete parser; delete docHandler; - return true; + + return errorCount > 0 ? false : true; } // |
