- Fix a possible crash when pausing then deleting a torrent quickly

This commit is contained in:
Christophe Dumez 2009-09-21 19:08:33 +00:00
parent 0433254ad8
commit 2556346dda

View file

@ -1264,6 +1264,7 @@ void bittorrent::readAlerts() {
else if (save_resume_data_alert* p = dynamic_cast<save_resume_data_alert*>(a.get())) { else if (save_resume_data_alert* p = dynamic_cast<save_resume_data_alert*>(a.get())) {
QDir torrentBackup(misc::qBittorrentPath() + "BT_backup"); QDir torrentBackup(misc::qBittorrentPath() + "BT_backup");
QTorrentHandle h(p->handle); QTorrentHandle h(p->handle);
if(h.is_valid()) {
QString file = h.hash()+".fastresume"; QString file = h.hash()+".fastresume";
// Delete old fastresume file if necessary // Delete old fastresume file if necessary
if(QFile::exists(file)) if(QFile::exists(file))
@ -1276,6 +1277,7 @@ void bittorrent::readAlerts() {
bencode(std::ostream_iterator<char>(out), *p->resume_data); bencode(std::ostream_iterator<char>(out), *p->resume_data);
} }
} }
}
else if (metadata_received_alert* p = dynamic_cast<metadata_received_alert*>(a.get())) { else if (metadata_received_alert* p = dynamic_cast<metadata_received_alert*>(a.get())) {
QTorrentHandle h(p->handle); QTorrentHandle h(p->handle);
if(h.is_valid()) { if(h.is_valid()) {
@ -1290,11 +1292,13 @@ void bittorrent::readAlerts() {
} }
else if (file_error_alert* p = dynamic_cast<file_error_alert*>(a.get())) { else if (file_error_alert* p = dynamic_cast<file_error_alert*>(a.get())) {
QTorrentHandle h(p->handle); QTorrentHandle h(p->handle);
if(h.is_valid()) {
h.auto_managed(false); h.auto_managed(false);
std::cerr << "File Error: " << p->message().c_str() << std::endl; std::cerr << "File Error: " << p->message().c_str() << std::endl;
if(h.is_valid()) if(h.is_valid())
emit fullDiskError(h, misc::toQString(p->message())); emit fullDiskError(h, misc::toQString(p->message()));
} }
}
else if (dynamic_cast<listen_failed_alert*>(a.get())) { else if (dynamic_cast<listen_failed_alert*>(a.get())) {
// Level: fatal // Level: fatal
addConsoleMessage(tr("Couldn't listen on any of the given ports."), QString::fromUtf8("red")); addConsoleMessage(tr("Couldn't listen on any of the given ports."), QString::fromUtf8("red"));