summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qfsfileengine_win.cpp
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2022-09-06 10:23:36 -0700
committerThiago Macieira <thiago.macieira@intel.com>2022-09-16 08:37:49 -0700
commit4b997d1851bc62b9a1eb761f08d3b22c85bb0b51 (patch)
tree015a3e7518f1189d1d9487e767ce51c5364a2ee7 /src/corelib/io/qfsfileengine_win.cpp
parent68f641095c5403925e49954aea0e65c4574121e0 (diff)
QFileDevice: clear cached permissions on setPermission()
In theory, if we succeed, the permissions should be what we set, but let's not make that assumption. And if we failed, it might be because the file disappeared or something else, so re-stat()ing the file is a good idea. Pick-to: 6.4 Fixes: QTBUG-7211 Change-Id: If5d5ef6220874ae8858efffd171255506b7bbee0 Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'src/corelib/io/qfsfileengine_win.cpp')
-rw-r--r--src/corelib/io/qfsfileengine_win.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/corelib/io/qfsfileengine_win.cpp b/src/corelib/io/qfsfileengine_win.cpp
index ae59cf9e55..1030c55937 100644
--- a/src/corelib/io/qfsfileengine_win.cpp
+++ b/src/corelib/io/qfsfileengine_win.cpp
@@ -655,6 +655,10 @@ bool QFSFileEngine::setPermissions(uint perms)
{
Q_D(QFSFileEngine);
QSystemError error;
+
+ // clear cached state (if any)
+ d->metaData.clearFlags(QFileSystemMetaData::Permissions);
+
bool ret = QFileSystemEngine::setPermissions(d->fileEntry, QFile::Permissions(perms), error);
if (!ret)
setError(QFile::PermissionsError, error.toString());