diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-11-11 05:12:37 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-11-11 05:12:37 +0000 |
| commit | bcf4593bda20504f026e359413f226519cbb8d37 (patch) | |
| tree | 1aa69c63d901eebcf43c6803d1550e9697aa7281 /src | |
| parent | e728385bc9b7bdef0c354dc53b7c0fc9f40890ef (diff) | |
2010-11-11 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Create SharedHandle outside of function call to avoid unexpected
memory leak.
* src/AnnounceList.cc
* src/FtpNegotiationCommand.cc
* src/HttpResponseCommand.cc
* src/RequestGroup.cc
* src/RequestGroupMan.cc
* src/UTMetadataPostDownloadHandler.cc
* src/download_helper.cc
Diffstat (limited to 'src')
| -rw-r--r-- | src/AnnounceList.cc | 3 | ||||
| -rw-r--r-- | src/FtpNegotiationCommand.cc | 10 | ||||
| -rw-r--r-- | src/HttpResponseCommand.cc | 9 | ||||
| -rw-r--r-- | src/RequestGroup.cc | 14 | ||||
| -rw-r--r-- | src/RequestGroupMan.cc | 16 | ||||
| -rw-r--r-- | src/UTMetadataPostDownloadHandler.cc | 3 | ||||
| -rw-r--r-- | src/download_helper.cc | 6 |
7 files changed, 30 insertions, 31 deletions
diff --git a/src/AnnounceList.cc b/src/AnnounceList.cc index 3533ab37..c495798e 100644 --- a/src/AnnounceList.cc +++ b/src/AnnounceList.cc @@ -79,7 +79,8 @@ void AnnounceList::reconfigure void AnnounceList::reconfigure(const std::string& url) { std::deque<std::string> urls; urls.push_back(url); - tiers_.push_back(SharedHandle<AnnounceTier>(new AnnounceTier(urls))); + SharedHandle<AnnounceTier> tier(new AnnounceTier(urls)); + tiers_.push_back(tier); resetIterator(); } diff --git a/src/FtpNegotiationCommand.cc b/src/FtpNegotiationCommand.cc index bf208e19..1c962575 100644 --- a/src/FtpNegotiationCommand.cc +++ b/src/FtpNegotiationCommand.cc @@ -431,12 +431,10 @@ bool FtpNegotiationCommand::onFileSizeDetermined(uint64_t totalLength) getSegmentMan()->getSegmentWithIndex(getCuid(), 0); return true; } else { - getRequestGroup()->adjustFilename - (SharedHandle<BtProgressInfoFile> - (new DefaultBtProgressInfoFile - (getDownloadContext(), - SharedHandle<PieceStorage>(), - getOption().get()))); + SharedHandle<BtProgressInfoFile> progressInfoFile + (new DefaultBtProgressInfoFile + (getDownloadContext(), SharedHandle<PieceStorage>(), getOption().get())); + getRequestGroup()->adjustFilename(progressInfoFile); getRequestGroup()->initPieceStorage(); if(getOption()->getAsBool(PREF_DRY_RUN)) { diff --git a/src/HttpResponseCommand.cc b/src/HttpResponseCommand.cc index 2971a0dc..fb90d5ae 100644 --- a/src/HttpResponseCommand.cc +++ b/src/HttpResponseCommand.cc @@ -293,11 +293,10 @@ bool HttpResponseCommand::handleDefaultEncoding (const SharedHandle<HttpResponse>& httpResponse) { SharedHandle<HttpRequest> httpRequest = httpResponse->getHttpRequest(); - getRequestGroup()->adjustFilename - (SharedHandle<BtProgressInfoFile>(new DefaultBtProgressInfoFile - (getDownloadContext(), - SharedHandle<PieceStorage>(), - getOption().get()))); + SharedHandle<BtProgressInfoFile> progressInfoFile + (new DefaultBtProgressInfoFile + (getDownloadContext(), SharedHandle<PieceStorage>(), getOption().get())); + getRequestGroup()->adjustFilename(progressInfoFile); getRequestGroup()->initPieceStorage(); if(getOption()->getAsBool(PREF_DRY_RUN)) { diff --git a/src/RequestGroup.cc b/src/RequestGroup.cc index d358c82e..e25d3e52 100644 --- a/src/RequestGroup.cc +++ b/src/RequestGroup.cc @@ -484,11 +484,10 @@ void RequestGroup::createInitialCommand (StringFormat(EX_DUPLICATE_FILE_DOWNLOAD, downloadContext_->getBasePath().c_str()).str()); } - adjustFilename - (SharedHandle<BtProgressInfoFile>(new DefaultBtProgressInfoFile - (downloadContext_, - SharedHandle<PieceStorage>(), - option_.get()))); + SharedHandle<BtProgressInfoFile> progressInfoFile + (new DefaultBtProgressInfoFile + (downloadContext_, SharedHandle<PieceStorage>(), option_.get())); + adjustFilename(progressInfoFile); initPieceStorage(); SharedHandle<CheckIntegrityEntry> checkEntry = createCheckIntegrityEntry(); @@ -601,8 +600,9 @@ void RequestGroup::initPieceStorage() if(logger_->debug()) { logger_->debug("Using LongestSequencePieceSelector"); } - ps->setPieceSelector - (SharedHandle<PieceSelector>(new LongestSequencePieceSelector())); + SharedHandle<PieceSelector> longestPieceSelector + (new LongestSequencePieceSelector()); + ps->setPieceSelector(longestPieceSelector); } if(option_->defined(PREF_BT_PRIORITIZE_PIECE)) { std::vector<size_t> result; diff --git a/src/RequestGroupMan.cc b/src/RequestGroupMan.cc index bba8b23c..7cd633c8 100644 --- a/src/RequestGroupMan.cc +++ b/src/RequestGroupMan.cc @@ -463,22 +463,22 @@ void RequestGroupMan::configureRequestGroup { const std::string& uriSelectorValue = option_->get(PREF_URI_SELECTOR); if(uriSelectorValue == V_FEEDBACK) { - requestGroup->setURISelector - (SharedHandle<URISelector>(new FeedbackURISelector(serverStatMan_))); + SharedHandle<URISelector> sel(new FeedbackURISelector(serverStatMan_)); + requestGroup->setURISelector(sel); } else if(uriSelectorValue == V_INORDER) { - requestGroup->setURISelector - (SharedHandle<URISelector>(new InOrderURISelector())); + SharedHandle<URISelector> sel(new InOrderURISelector()); + requestGroup->setURISelector(sel); } else if(uriSelectorValue == V_ADAPTIVE) { - requestGroup->setURISelector - (SharedHandle<URISelector>(new AdaptiveURISelector(serverStatMan_, - requestGroup.get()))); + SharedHandle<URISelector> sel(new AdaptiveURISelector(serverStatMan_, + requestGroup.get())); + requestGroup->setURISelector(sel); } } namespace { void createInitialCommand(const SharedHandle<RequestGroup>& requestGroup, std::vector<Command*>& commands, - DownloadEngine* e) + DownloadEngine* e) { requestGroup->createInitialCommand(commands, e); } diff --git a/src/UTMetadataPostDownloadHandler.cc b/src/UTMetadataPostDownloadHandler.cc index 7a603d6b..6027d679 100644 --- a/src/UTMetadataPostDownloadHandler.cc +++ b/src/UTMetadataPostDownloadHandler.cc @@ -69,7 +69,8 @@ bool UTMetadataPostDownloadHandler::Criteria::match UTMetadataPostDownloadHandler::UTMetadataPostDownloadHandler(): logger_(LogFactory::getInstance()) { - setCriteria(SharedHandle<Criteria>(new Criteria())); + SharedHandle<Criteria> cri(new Criteria()); + setCriteria(cri); } void UTMetadataPostDownloadHandler::getNextRequestGroups diff --git a/src/download_helper.cc b/src/download_helper.cc index b33c033b..1f2a11e6 100644 --- a/src/download_helper.cc +++ b/src/download_helper.cc @@ -311,9 +311,9 @@ createBtMagnetRequestGroup(const std::string& magnetLink, dctx->getFirstFileEntry()->setPath(torrentAttrs->name); rg->setDownloadContext(dctx); rg->clearPostDownloadHandler(); - rg->addPostDownloadHandler - (SharedHandle<UTMetadataPostDownloadHandler> - (new UTMetadataPostDownloadHandler())); + SharedHandle<UTMetadataPostDownloadHandler> utMetadataPostHandler + (new UTMetadataPostDownloadHandler()); + rg->addPostDownloadHandler(utMetadataPostHandler); rg->setDiskWriterFactory (SharedHandle<DiskWriterFactory>(new ByteArrayDiskWriterFactory())); rg->setMetadataInfo(createMetadataInfo(magnetLink)); |
