浏览代码

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.
Tatsuhiro Tsujikawa 14 年之前
父节点
当前提交
97f76b7cf4
共有 1 个文件被更改,包括 2 次插入0 次删除
  1. 2 0
      src/RequestGroup.cc

+ 2 - 0
src/RequestGroup.cc

@@ -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);