summaryrefslogtreecommitdiff
path: root/src/RequestGroupMan.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-02-03 18:08:39 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-02-03 18:18:28 +0900
commit1c9cfccac4bdd16b8c6662eab9e58d6f517424d0 (patch)
treedaa5f42cb6004280e79532b7e251b1923c259284 /src/RequestGroupMan.cc
parent0a4b21e33b3db9c07c0a9eb7e322d5201728e796 (diff)
Fix invalid iterator handling when deleting RequestGroup
Diffstat (limited to 'src/RequestGroupMan.cc')
-rw-r--r--src/RequestGroupMan.cc9
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)