Merge pull request #305 from Dmitry-Me/errorShouldBeClearedAfterLoad
If LoadFile() fails then subsequent successful LoadFile() must clear the error
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index 6a7ca07..af8ba5f 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -1879,6 +1879,9 @@
XMLError XMLDocument::SaveFile( FILE* fp, bool compact )
{
+ // Clear any error from the last save, otherwise it will get reported
+ // for *this* call.
+ SetError( XML_NO_ERROR, 0, 0 );
XMLPrinter stream( fp, compact );
Print( &stream );
return _errorID;
diff --git a/xmltest.cpp b/xmltest.cpp
index ffff2f8..d090863 100644
--- a/xmltest.cpp
+++ b/xmltest.cpp
@@ -1433,6 +1433,14 @@
XMLPrinter printer;
newElement->Accept( &printer );
}
+ {
+ // Issue 302. Clear errors from LoadFile/SaveFile
+ XMLDocument doc;
+ doc.SaveFile( "./no/such/path/pretty.xml" );
+ XMLTest( "Issue 302. Fail to save", doc.ErrorName(), "XML_ERROR_FILE_COULD_NOT_BE_OPENED" );
+ doc.SaveFile( "./resources/out/compact.xml", true );
+ XMLTest( "Issue 302. Subsequent success in saving", doc.ErrorName(), "XML_SUCCESS" );
+ }
{
// If a document fails to load then subsequent