summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-11-11 05:12:37 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-11-11 05:12:37 +0000
commitbcf4593bda20504f026e359413f226519cbb8d37 (patch)
tree1aa69c63d901eebcf43c6803d1550e9697aa7281 /src
parente728385bc9b7bdef0c354dc53b7c0fc9f40890ef (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.cc3
-rw-r--r--src/FtpNegotiationCommand.cc10
-rw-r--r--src/HttpResponseCommand.cc9
-rw-r--r--src/RequestGroup.cc14
-rw-r--r--src/RequestGroupMan.cc16
-rw-r--r--src/UTMetadataPostDownloadHandler.cc3
-rw-r--r--src/download_helper.cc6
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));