mirror of https://github.com/aria2/aria2
Fixed the bug that causes segmentation fault when unpause RequestGroup
which has resolved BtDependency.pull/1/head
parent
eb6a811279
commit
a21fb350a0
|
@ -76,6 +76,9 @@ void copyValues(const SharedHandle<FileEntry>& d,
|
||||||
|
|
||||||
bool BtDependency::resolve()
|
bool BtDependency::resolve()
|
||||||
{
|
{
|
||||||
|
if(!dependee_) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if(dependee_->getNumCommand() == 0 && dependee_->downloadFinished()) {
|
if(dependee_->getNumCommand() == 0 && dependee_->downloadFinished()) {
|
||||||
SharedHandle<RequestGroup> dependee = dependee_;
|
SharedHandle<RequestGroup> dependee = dependee_;
|
||||||
// cut reference here
|
// cut reference here
|
||||||
|
|
|
@ -25,6 +25,7 @@ class BtDependencyTest:public CppUnit::TestFixture {
|
||||||
|
|
||||||
CPPUNIT_TEST_SUITE(BtDependencyTest);
|
CPPUNIT_TEST_SUITE(BtDependencyTest);
|
||||||
CPPUNIT_TEST(testResolve);
|
CPPUNIT_TEST(testResolve);
|
||||||
|
CPPUNIT_TEST(testResolve_nullDependee);
|
||||||
CPPUNIT_TEST(testResolve_originalNameNoMatch);
|
CPPUNIT_TEST(testResolve_originalNameNoMatch);
|
||||||
CPPUNIT_TEST(testResolve_singleFileWithoutOriginalName);
|
CPPUNIT_TEST(testResolve_singleFileWithoutOriginalName);
|
||||||
CPPUNIT_TEST(testResolve_multiFile);
|
CPPUNIT_TEST(testResolve_multiFile);
|
||||||
|
@ -71,6 +72,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
void testResolve();
|
void testResolve();
|
||||||
|
void testResolve_nullDependee();
|
||||||
void testResolve_originalNameNoMatch();
|
void testResolve_originalNameNoMatch();
|
||||||
void testResolve_singleFileWithoutOriginalName();
|
void testResolve_singleFileWithoutOriginalName();
|
||||||
void testResolve_multiFile();
|
void testResolve_multiFile();
|
||||||
|
@ -106,6 +108,13 @@ void BtDependencyTest::testResolve()
|
||||||
CPPUNIT_ASSERT(firstFileEntry->isRequested());
|
CPPUNIT_ASSERT(firstFileEntry->isRequested());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BtDependencyTest::testResolve_nullDependee()
|
||||||
|
{
|
||||||
|
SharedHandle<RequestGroup> dependant = createDependant(option_);
|
||||||
|
BtDependency dep(dependant.get(), SharedHandle<RequestGroup>());
|
||||||
|
CPPUNIT_ASSERT(dep.resolve());
|
||||||
|
}
|
||||||
|
|
||||||
void BtDependencyTest::testResolve_originalNameNoMatch()
|
void BtDependencyTest::testResolve_originalNameNoMatch()
|
||||||
{
|
{
|
||||||
std::string filename = A2_TEST_DIR"/single.torrent";
|
std::string filename = A2_TEST_DIR"/single.torrent";
|
||||||
|
|
Loading…
Reference in New Issue