Explorar el Código

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 hace 14 años
padre
commit
97f76b7cf4
Se han modificado 1 ficheros con 2 adiciones y 0 borrados
  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);