Fixed the bug due to dangling pointers in RequestGroup.

RequestGroup holds a poitner to btRuntime_ and peerStorage_. After
removing them from BtRegistry, we failed to set 0 to them.  When
program access them, it goes undefined world, such as random crash.
We found this bug when pasuing download and valgrind warned memory
corruption.
pull/1/head
Tatsuhiro Tsujikawa 2011-07-21 23:59:44 +09:00
parent c58f736bb9
commit 97f76b7cf4
1 changed files with 2 additions and 0 deletions

View File

@ -1021,6 +1021,8 @@ void RequestGroup::releaseRuntimeResource(DownloadEngine* e)
{
#ifdef ENABLE_BITTORRENT
e->getBtRegistry()->remove(gid_);
btRuntime_ = 0;
peerStorage_ = 0;
#endif // ENABLE_BITTORRENT
if(pieceStorage_) {
pieceStorage_->removeAdvertisedPiece(0);