diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2020-11-01 16:53:26 +0100 |
---|---|---|
committer | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2020-11-20 14:28:31 +0100 |
commit | 612a01be6513894ab1ec5a36b699a2142ba7f35c (patch) | |
tree | 4018c688b737c9b010677d2c419cb719b9ed9e68 /src/corelib/io | |
parent | 5dd7e7b7a826d5d4314dffaaf20d465460616998 (diff) |
Deprecate QScopedPointer::take()
We've decided that QScopedPointer shouldn't be movable,
because it would break the semantics of being "scoped"
(the pointer/pointee won't survive the scope).
Then, QScopedPointer shouldn't allow for take() either.
If you need those semantics, reach for unique_ptr.
[ChangeLog][QtCore][QScopedPointer] The take() function
has been deprecated. This was an API mistake, as it
allowed the pointer/pointee to escape from the scope,
defeating the point of the QScopedPointer class. If you
need such semantics, use std::unique_ptr (and call
release()).
Change-Id: I3236f085f763b04eb98e3242abc06f7c54fb3d8b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/io')
-rw-r--r-- | src/corelib/io/qdir.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/corelib/io/qdir.cpp b/src/corelib/io/qdir.cpp index 16fd09efdb..9dd0f4ac1d 100644 --- a/src/corelib/io/qdir.cpp +++ b/src/corelib/io/qdir.cpp @@ -63,6 +63,7 @@ #endif #include <algorithm> +#include <memory> #include <stdlib.h> QT_BEGIN_NAMESPACE @@ -1022,12 +1023,12 @@ bool QDir::cd(const QString &dirName) } } - QScopedPointer<QDirPrivate> dir(new QDirPrivate(*d_ptr.constData())); + std::unique_ptr<QDirPrivate> dir(new QDirPrivate(*d_ptr.constData())); dir->setPath(newPath); if (!dir->exists()) return false; - d_ptr = dir.take(); + d_ptr = dir.release(); return true; } @@ -1730,7 +1731,7 @@ bool QDir::isRelative() const bool QDir::makeAbsolute() { const QDirPrivate *d = d_ptr.constData(); - QScopedPointer<QDirPrivate> dir; + std::unique_ptr<QDirPrivate> dir; if (!!d->fileEngine) { QString absolutePath = d->fileEngine->fileName(QAbstractFileEngine::AbsoluteName); if (QDir::isRelativePath(absolutePath)) @@ -1743,7 +1744,7 @@ bool QDir::makeAbsolute() dir.reset(new QDirPrivate(*d_ptr.constData())); dir->setPath(d->absoluteDirEntry.filePath()); } - d_ptr = dir.take(); // actually detach + d_ptr = dir.release(); // actually detach return true; } |