From a966b19b520cdbcc515ed90fe5e544d6f58af9ec Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Thu, 18 Sep 2014 17:59:51 +0200 Subject: [PATCH] Fix crash in QNetworkAccessCacheBackend::closeDownstreamChannel device is private, always null and class has no friends, so no need to have it at all Change-Id: I320d47f1a712a3202c08b494563533e29d185501 Reviewed-by: Lars Knoll Reviewed-by: Richard J. Moore --- src/network/access/qnetworkaccesscachebackend.cpp | 6 ------ src/network/access/qnetworkaccesscachebackend_p.h | 1 - .../tst_qnetworkaccessmanager.cpp | 13 +++++++++++++ 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/network/access/qnetworkaccesscachebackend.cpp b/src/network/access/qnetworkaccesscachebackend.cpp index 890032fe47..ea3d6b0cce 100644 --- a/src/network/access/qnetworkaccesscachebackend.cpp +++ b/src/network/access/qnetworkaccesscachebackend.cpp @@ -52,7 +52,6 @@ QT_BEGIN_NAMESPACE QNetworkAccessCacheBackend::QNetworkAccessCacheBackend() : QNetworkAccessBackend() - , device(0) { } @@ -125,11 +124,6 @@ bool QNetworkAccessCacheBackend::sendCacheContents() void QNetworkAccessCacheBackend::closeDownstreamChannel() { - if (operation() == QNetworkAccessManager::GetOperation) { - device->close(); - delete device; - device = 0; - } } void QNetworkAccessCacheBackend::closeUpstreamChannel() diff --git a/src/network/access/qnetworkaccesscachebackend_p.h b/src/network/access/qnetworkaccesscachebackend_p.h index 69765e893e..58f5aac83f 100644 --- a/src/network/access/qnetworkaccesscachebackend_p.h +++ b/src/network/access/qnetworkaccesscachebackend_p.h @@ -75,7 +75,6 @@ public: private: bool sendCacheContents(); - QIODevice *device; }; diff --git a/tests/auto/network/access/qnetworkaccessmanager/tst_qnetworkaccessmanager.cpp b/tests/auto/network/access/qnetworkaccessmanager/tst_qnetworkaccessmanager.cpp index 125eab2f8c..2bdcf5b777 100644 --- a/tests/auto/network/access/qnetworkaccessmanager/tst_qnetworkaccessmanager.cpp +++ b/tests/auto/network/access/qnetworkaccessmanager/tst_qnetworkaccessmanager.cpp @@ -42,6 +42,7 @@ #include #include +#include #ifndef QT_NO_BEARERMANAGEMENT #include #endif @@ -61,6 +62,7 @@ public: private slots: void networkAccessible(); + void alwaysCacheRequest(); }; tst_QNetworkAccessManager::tst_QNetworkAccessManager() @@ -126,5 +128,16 @@ void tst_QNetworkAccessManager::networkAccessible() #endif } +void tst_QNetworkAccessManager::alwaysCacheRequest() +{ + QNetworkAccessManager manager; + + QNetworkRequest req; + req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysCache); + QNetworkReply *reply = manager.get(req); + reply->close(); + delete reply; +} + QTEST_MAIN(tst_QNetworkAccessManager) #include "tst_qnetworkaccessmanager.moc"