diff options
author | Jungo Kim <jungo.kim@lge.com> | 2014-01-10 11:51:33 +0900 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-29 02:04:09 +0100 |
commit | 69bf59ecfd061429e11231cb1fb90178d595baf1 (patch) | |
tree | a3050b746e8e0411e7c5a9bf022dfccefc91291b /src/network/access/qnetworkdiskcache.cpp | |
parent | c58c98a248e104e55a7210b80a9f221bb019cbc9 (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.cpp | 14 |
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; |