Better test deletion loop

This commit is contained in:
Dmitry-Me 2017-09-27 18:51:01 +03:00
parent 884852eb65
commit b41e24aa1c
1 changed files with 23 additions and 13 deletions

View File

@ -2017,19 +2017,29 @@ int main( int argc, const char ** argv )
XMLElement* playlist = doc.FirstChildElement("playlist"); XMLElement* playlist = doc.FirstChildElement("playlist");
XMLTest("Crash bug parsing", true, playlist != 0); XMLTest("Crash bug parsing", true, playlist != 0);
tinyxml2::XMLElement* entry = playlist->FirstChildElement("entry"); {
XMLTest("Crash bug parsing", true, entry != 0); const char* elementName = "entry";
while (entry) { XMLElement* entry = playlist->FirstChildElement(elementName);
tinyxml2::XMLElement* todelete = entry; XMLTest("Crash bug parsing", true, entry != 0);
entry = entry->NextSiblingElement("entry"); while (entry) {
playlist->DeleteChild(todelete); XMLElement* todelete = entry;
}; entry = entry->NextSiblingElement(elementName);
tinyxml2::XMLElement* blank = playlist->FirstChildElement("blank"); playlist->DeleteChild(todelete);
while (blank) { }
tinyxml2::XMLElement* todelete = blank; entry = playlist->FirstChildElement(elementName);
blank = blank->NextSiblingElement("blank"); XMLTest("Crash bug parsing", true, entry == 0);
playlist->DeleteChild(todelete); }
}; {
const char* elementName = "blank";
XMLElement* blank = playlist->FirstChildElement(elementName);
XMLTest("Crash bug parsing", true, blank != 0);
while (blank) {
XMLElement* todelete = blank;
blank = blank->NextSiblingElement(elementName);
playlist->DeleteChild(todelete);
}
XMLTest("Crash bug parsing", true, blank == 0);
}
tinyxml2::XMLPrinter printer; tinyxml2::XMLPrinter printer;
playlist->Accept(&printer); playlist->Accept(&printer);