diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2014-07-02 14:40:38 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2014-07-03 06:34:51 +0200 |
commit | 0831cb26f41d5d81b5fbf3ed07fdfb57e9ab05e1 (patch) | |
tree | 4a80a7f09aab2ae16557f1e4af96c3a49bd437e6 /src/corelib/io/qfsfileengine.cpp | |
parent | ba92215432d7b56f6f519e9d78adcac03d6990a8 (diff) |
Ensure that QTemporaryFile clears all file mappings.
Factor out code to clear all mappings into
QFSFileEnginePrivate::unmapAll() and call that
from QTemporaryFile.
Task-number: QTBUG-39976
Change-Id: Ic1ceeba0ba4451866f1081fee430e5c458c0819d
Reviewed-by: Jonathan Liu <net147@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/io/qfsfileengine.cpp')
-rw-r--r-- | src/corelib/io/qfsfileengine.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/corelib/io/qfsfileengine.cpp b/src/corelib/io/qfsfileengine.cpp index 998a3334c9..3c4a2fac0b 100644 --- a/src/corelib/io/qfsfileengine.cpp +++ b/src/corelib/io/qfsfileengine.cpp @@ -179,9 +179,7 @@ QFSFileEngine::~QFSFileEngine() } while (ret == -1 && errno == EINTR); } } - QList<uchar*> keys = d->maps.keys(); - for (int i = 0; i < keys.count(); ++i) - unmap(keys.at(i)); + d->unmapAll(); } /*! @@ -463,6 +461,18 @@ qint64 QFSFileEngine::size() const return d->nativeSize(); } +/*! + \internal +*/ +void QFSFileEnginePrivate::unmapAll() +{ + if (!maps.isEmpty()) { + const QList<uchar*> keys = maps.keys(); // Make a copy since unmap() modifies the map. + for (int i = 0; i < keys.count(); ++i) + unmap(keys.at(i)); + } +} + #ifndef Q_OS_WIN /*! \internal |