diff options
author | Aaron McCarthy <aaron.mccarthy@nokia.com> | 2010-02-16 01:21:28 (GMT) |
---|---|---|
committer | Aaron McCarthy <aaron.mccarthy@nokia.com> | 2010-02-16 01:21:28 (GMT) |
commit | 13a880f23b01856770a3afc12b1a47121ef04349 (patch) | |
tree | a1d7160d2cf55d37ac07307446d6e631d5ec8200 | |
parent | 4f7dc1642d66850deed0395f8b713af7a21d8957 (diff) | |
download | Qt-13a880f23b01856770a3afc12b1a47121ef04349.zip Qt-13a880f23b01856770a3afc12b1a47121ef04349.tar.gz Qt-13a880f23b01856770a3afc12b1a47121ef04349.tar.bz2 |
Fix segfault.
manager may be 0.
-rw-r--r-- | src/network/access/qnetworkreplyimpl.cpp | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/src/network/access/qnetworkreplyimpl.cpp b/src/network/access/qnetworkreplyimpl.cpp index 8951d08..2175686 100644 --- a/src/network/access/qnetworkreplyimpl.cpp +++ b/src/network/access/qnetworkreplyimpl.cpp @@ -549,21 +549,24 @@ void QNetworkReplyImplPrivate::finished() QVariant totalSize = cookedHeaders.value(QNetworkRequest::ContentLengthHeader); if (preMigrationDownloaded != Q_INT64_C(-1)) totalSize = totalSize.toLongLong() + preMigrationDownloaded; - QNetworkSession *session = manager->d_func()->networkSession; - if (session && session->state() == QNetworkSession::Roaming && - state == Working && errorCode != QNetworkReply::OperationCanceledError) { - // only content with a known size will fail with a temporary network failure error - if (!totalSize.isNull()) { - if (bytesDownloaded != totalSize) { - if (migrateBackend()) { - // either we are migrating or the request is finished/aborted - if (state == Reconnecting || state == WaitingForSession) { - resumeNotificationHandling(); - return; // exit early if we are migrating. + + if (!manager.isNull()) { + QNetworkSession *session = manager->d_func()->networkSession; + if (session && session->state() == QNetworkSession::Roaming && + state == Working && errorCode != QNetworkReply::OperationCanceledError) { + // only content with a known size will fail with a temporary network failure error + if (!totalSize.isNull()) { + if (bytesDownloaded != totalSize) { + if (migrateBackend()) { + // either we are migrating or the request is finished/aborted + if (state == Reconnecting || state == WaitingForSession) { + resumeNotificationHandling(); + return; // exit early if we are migrating. + } + } else { + error(QNetworkReply::TemporaryNetworkFailureError, + q->tr("Temporary network failure.")); } - } else { - error(QNetworkReply::TemporaryNetworkFailureError, - q->tr("Temporary network failure.")); } } } |