Lee Thomason 11 лет назад
Родитель
Сommit
f657783cf2
2 измененных файлов с 11 добавлено и 0 удалено
  1. 3 0
      tinyxml2.cpp
  2. 8 0
      xmltest.cpp

+ 3 - 0
tinyxml2.cpp

@@ -1879,6 +1879,9 @@ XMLError XMLDocument::SaveFile( const char* filename, bool compact )
 
 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;

+ 8 - 0
xmltest.cpp

@@ -1433,6 +1433,14 @@ int main( int argc, const char ** argv )
 		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" );
+	}
 
 	// ----------- Performance tracking --------------
 	{