Browse Source

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 năm trước cách đây
mục cha
commit
97f76b7cf4
1 tập tin đã thay đổi với 2 bổ sung0 xóa
  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);