diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-02-03 18:08:39 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-02-03 18:18:28 +0900 |
| commit | 1c9cfccac4bdd16b8c6662eab9e58d6f517424d0 (patch) | |
| tree | daa5f42cb6004280e79532b7e251b1923c259284 /src/RequestGroupMan.cc | |
| parent | 0a4b21e33b3db9c07c0a9eb7e322d5201728e796 (diff) | |
Fix invalid iterator handling when deleting RequestGroup
Diffstat (limited to 'src/RequestGroupMan.cc')
| -rw-r--r-- | src/RequestGroupMan.cc | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/RequestGroupMan.cc b/src/RequestGroupMan.cc index 2eeccede..e5cdc095 100644 --- a/src/RequestGroupMan.cc +++ b/src/RequestGroupMan.cc @@ -207,7 +207,7 @@ size_t RequestGroupMan::changeReservedGroupPosition bool RequestGroupMan::removeReservedGroup(a2_gid_t gid) { - return reservedGroups_.erase(gid); + return reservedGroups_.remove(gid); } namespace { @@ -440,9 +440,8 @@ void RequestGroupMan::removeStoppedGroup(DownloadEngine* e) eoi = requestGroups_.end(); i != eoi;) { const SharedHandle<RequestGroup>& rg = (*i).second; if(rg->getNumCommand() == 0) { - ++i; - requestGroups_.erase(rg->getGID()); - // rg is invalid here. + i = requestGroups_.erase(i); + eoi = requestGroups_.end(); } else { ++i; } @@ -875,7 +874,7 @@ RequestGroupMan::findDownloadResult(a2_gid_t gid) const bool RequestGroupMan::removeDownloadResult(a2_gid_t gid) { - return downloadResults_.erase(gid); + return downloadResults_.remove(gid); } void RequestGroupMan::addDownloadResult(const SharedHandle<DownloadResult>& dr) |
