summaryrefslogtreecommitdiffstats
path: root/src/network/access/qnetworkdiskcache.cpp
diff options
context:
space:
mode:
authorJungo Kim <jungo.kim@lge.com>2014-01-10 11:51:33 +0900
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-01-29 02:04:09 +0100
commit69bf59ecfd061429e11231cb1fb90178d595baf1 (patch)
treea3050b746e8e0411e7c5a9bf022dfccefc91291b /src/network/access/qnetworkdiskcache.cpp
parentc58c98a248e104e55a7210b80a9f221bb019cbc9 (diff)
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 <jungo.kim@lge.com> Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
Diffstat (limited to 'src/network/access/qnetworkdiskcache.cpp')
-rw-r--r--src/network/access/qnetworkdiskcache.cpp14
1 files changed, 14 insertions, 0 deletions
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<QIODevice*, QCacheItem*> 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;