From 020fc9e9dcd19ef515e48c96e83fd6f75d52684a Mon Sep 17 00:00:00 2001
From: Albert Astals Cid <albert.astals@canonical.com>
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
---
 src/network/access/qnetworkaccesscachebackend.cpp           |  6 ------
 src/network/access/qnetworkaccesscachebackend_p.h           |  1 -
 .../qnetworkaccessmanager/tst_qnetworkaccessmanager.cpp     | 13 +++++++++++++
 3 files changed, 13 insertions(+), 7 deletions(-)

--- qtbase/src/network/access/qnetworkaccesscachebackend.cpp
+++ qtbase/src/network/access/qnetworkaccesscachebackend.cpp
@@ -52,7 +52,6 @@
 
 QNetworkAccessCacheBackend::QNetworkAccessCacheBackend()
     : QNetworkAccessBackend()
-    , device(0)
 {
 }
 
@@ -125,11 +124,6 @@
 
 void QNetworkAccessCacheBackend::closeDownstreamChannel()
 {
-    if (operation() == QNetworkAccessManager::GetOperation) {
-        device->close();
-        delete device;
-        device = 0;
-    }
 }
 
 void QNetworkAccessCacheBackend::closeUpstreamChannel()
--- qtbase/src/network/access/qnetworkaccesscachebackend_p.h
+++ qtbase/src/network/access/qnetworkaccesscachebackend_p.h
@@ -75,7 +75,6 @@
 
 private:
     bool sendCacheContents();
-    QIODevice *device;
 
 };
 
--- qtbase/tests/auto/network/access/qnetworkaccessmanager/tst_qnetworkaccessmanager.cpp
+++ qtbase/tests/auto/network/access/qnetworkaccessmanager/tst_qnetworkaccessmanager.cpp
@@ -42,6 +42,7 @@
 #include <QtTest/QtTest>
 
 #include <QtNetwork/QNetworkAccessManager>
+#include <QtNetwork/QNetworkReply>
 #ifndef QT_NO_BEARERMANAGEMENT
 #include <QtNetwork/QNetworkConfigurationManager>
 #endif
@@ -61,6 +62,7 @@
 
 private slots:
     void networkAccessible();
+    void alwaysCacheRequest();
 };
 
 tst_QNetworkAccessManager::tst_QNetworkAccessManager()
@@ -126,5 +128,16 @@
 #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"
