Pārlūkot izejas kodu

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 gadi atpakaļ
vecāks
revīzija
97f76b7cf4
1 mainītis faili ar 2 papildinājumiem un 0 dzēšanām
  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);