diff options
author | Thierry Bastian <thierry.bastian@nokia.com> | 2009-06-26 10:01:38 (GMT) |
---|---|---|
committer | Thierry Bastian <thierry.bastian@nokia.com> | 2009-06-26 10:03:34 (GMT) |
commit | 56fbd7644b6f292dcd7d8d215bd469d94a0948ae (patch) | |
tree | b0247803e12f05742f889269a82f9641fb16398a /tests/auto/qvariant/tst_qvariant.cpp | |
parent | b914c388a809c17e4f76a4dcc1d3a1006e13c115 (diff) | |
download | Qt-56fbd7644b6f292dcd7d8d215bd469d94a0948ae.zip Qt-56fbd7644b6f292dcd7d8d215bd469d94a0948ae.tar.gz Qt-56fbd7644b6f292dcd7d8d215bd469d94a0948ae.tar.bz2 |
QVariant::setValue had a bug when changing its type
If it was shared and you then set it back to an int type,
it is still marked as shared,. This might even lead to crashes.
The patch was sent through gitorious by Jürgen Starek.
Note: autotest added as well
Diffstat (limited to 'tests/auto/qvariant/tst_qvariant.cpp')
-rw-r--r-- | tests/auto/qvariant/tst_qvariant.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/auto/qvariant/tst_qvariant.cpp b/tests/auto/qvariant/tst_qvariant.cpp index 0310276..63e47ab 100644 --- a/tests/auto/qvariant/tst_qvariant.cpp +++ b/tests/auto/qvariant/tst_qvariant.cpp @@ -255,6 +255,7 @@ private slots: void convertByteArrayToBool() const; void convertByteArrayToBool_data() const; void toIntFromQString() const; + void task256984_setValue(); }; Q_DECLARE_METATYPE(QDate) @@ -2967,5 +2968,21 @@ void tst_QVariant::toIntFromQString() const QVERIFY(ok); } +void tst_QVariant::task256984_setValue() +{ + QTransform t; //we just take a value so that we're sure that it will be shared + QVariant v1 = t; + QVERIFY( v1.isDetached() ); + QVariant v2 = v1; + QVERIFY( !v1.isDetached() ); + QVERIFY( !v2.isDetached() ); + + qVariantSetValue(v2, 3); //set an integer value + + QVERIFY( v1.isDetached() ); + QVERIFY( v2.isDetached() ); +} + + QTEST_MAIN(tst_QVariant) #include "tst_qvariant.moc" |