Просмотр исходного кода

Merge branch 'master' of github.com:leethomason/tinyxml2

Lee Thomason 2 месяцев назад
Родитель
Сommit
98137e6936
2 измененных файлов с 14 добавлено и 2 удалено
  1. 7 1
      tinyxml2.cpp
  2. 7 1
      xmltest.cpp

+ 7 - 1
tinyxml2.cpp

@@ -114,6 +114,9 @@ distribution.
 	#define TIXML_VSNPRINTF	vsnprintf
 	static inline int TIXML_VSCPRINTF( const char* format, va_list va )
 	{
+	    if (!format) {
+	        return 0;
+	    }
 		int len = vsnprintf( 0, 0, format, va );
 		TIXMLASSERT( len >= 0 );
 		return len;
@@ -2344,9 +2347,12 @@ static FILE* callfopen( const char* filepath, const char* mode )
     return fp;
 }
 
-void XMLDocument::DeleteNode( XMLNode* node )	{
+void XMLDocument::DeleteNode( XMLNode* node )	{   
     TIXMLASSERT( node );
     TIXMLASSERT(node->_document == this );
+    if(node == 0) {
+        return; // check for null pointer
+    }
     if (node->_parent) {
         node->_parent->DeleteChild( node );
     }

+ 7 - 1
xmltest.cpp

@@ -2025,7 +2025,13 @@ int main( int argc, const char ** argv )
 		XMLTest("Parse nested elements with pedantic whitespace", false, doc.Error());
 		XMLTest("Pedantic whitespace", true, 0 == doc.RootElement()->FirstChildElement()->GetText());
 	}
-
+	//Check the robustness of the DeleteNode function in handling null pointers.
+	{
+		XMLDocument doc;
+		doc.DeleteNode(nullptr);
+		XMLTest("DeleteNode with null pointer", true, doc.Error() == XML_SUCCESS);
+	}
+		
 	// Check sample xml can be parsed with pedantic mode
 	{
 		XMLDocument doc(true, PEDANTIC_WHITESPACE);