summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp')
-rw-r--r--tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
index 32c2154da6..7f6e26eecb 100644
--- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
+++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
@@ -276,6 +276,8 @@ private slots:
void compareSanity_data();
void compareSanity();
+ void accessSequentialContainerKey();
+
private:
void dataStream_data(QDataStream::Version version);
void loadQVariantFromDataStream(QDataStream::Version version);
@@ -4763,5 +4765,30 @@ void tst_QVariant::compareSanity()
}
}
+void tst_QVariant::accessSequentialContainerKey()
+{
+ QString nameResult;
+
+ {
+ QMap<QString, QObject*> mapping;
+ QString name = QString::fromLatin1("Seven");
+ mapping.insert(name, Q_NULLPTR);
+
+ QVariant variant = QVariant::fromValue(mapping);
+
+ QAssociativeIterable iterable = variant.value<QAssociativeIterable>();
+ QAssociativeIterable::const_iterator iit = iterable.begin();
+ const QAssociativeIterable::const_iterator end = iterable.end();
+ for ( ; iit != end; ++iit) {
+ nameResult += iit.key().toString();
+ }
+ } // Destroy mapping
+ // Regression test for QTBUG-52246 - no memory corruption/double deletion
+ // of the string key.
+
+ QCOMPARE(nameResult, QStringLiteral("Seven"));
+}
+
+
QTEST_MAIN(tst_QVariant)
#include "tst_qvariant.moc"