From 69bf59ecfd061429e11231cb1fb90178d595baf1 Mon Sep 17 00:00:00 2001 From: Jungo Kim Date: Fri, 10 Jan 2014 11:51:33 +0900 Subject: [PATCH] QNetworkDiskCache - fix leak of file descriptor When the caches is deleted, the open files are deleted without closing action. The file descriptor is remaining until the process is terminated. Change-Id: If85519d173d05548ddf3273c85800441887199e2 Reviewed-by: jungo kim Reviewed-by: Peter Hartmann --- src/network/access/qnetworkdiskcache.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/network/access/qnetworkdiskcache.cpp b/src/network/access/qnetworkdiskcache.cpp index d64d697013..2f2d1ab9a9 100644 --- a/src/network/access/qnetworkdiskcache.cpp +++ b/src/network/access/qnetworkdiskcache.cpp @@ -559,6 +559,20 @@ qint64 QNetworkDiskCache::expire() break; QString name = i.value(); QFile file(name); + + if (name.contains(PREPARED_SLASH)) { + QHashIterator iterator(d->inserting); + while (iterator.hasNext()) { + iterator.next(); + QCacheItem *item = iterator.value(); + if (item && item->file && item->file->fileName() == name) { + delete item->file; + item->file = 0; + break; + } + } + } + qint64 size = file.size(); file.remove(); totalSize -= size;