← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 2857: better loop when removing ADLS dirs

 

------------------------------------------------------------
revno: 2857
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Sun 2012-02-05 23:56:13 +0100
message:
  better loop when removing ADLS dirs
modified:
  win32/DirectoryListingFrame.cpp


--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk

Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'win32/DirectoryListingFrame.cpp'
--- win32/DirectoryListingFrame.cpp	2012-02-04 18:32:29 +0000
+++ win32/DirectoryListingFrame.cpp	2012-02-05 22:56:13 +0000
@@ -506,7 +506,7 @@
 		dl->save(path);
 
 		// remove previous ADLS matches.
-		for(auto dir = dirs->getChild(treeRoot); dir; dir = dirs->getNextSibling(dir)) {
+		for(auto dir = dirs->getChild(treeRoot); dir;) {
 			auto d = dirs->getData(dir)->dir;
 			if(d->getAdls()) {
 				HTREEITEM child;
@@ -514,9 +514,12 @@
 					dirs->erase(child);
 				}
 				dirs->erase(dir);
+				dir = dirs->getChild(treeRoot);
 				auto& pdirs = d->getParent()->directories;
 				pdirs.erase(std::remove(pdirs.begin(), pdirs.end(), d), pdirs.end());
 				delete d;
+			} else {
+				dir = dirs->getNextSibling(dir);
 			}
 		}
 		ADLSearchManager::getInstance()->matchListing(*dl);