diff --git a/src/corelib/tools/qcollator.cpp b/src/corelib/tools/qcollator.cpp index f1e3d6652d..2d17b00ba2 100644 --- a/src/corelib/tools/qcollator.cpp +++ b/src/corelib/tools/qcollator.cpp @@ -89,7 +89,8 @@ QCollator::QCollator(const QLocale &locale) QCollator::QCollator(const QCollator &other) : d(other.d) { - d->ref.ref(); + if (d) + d->ref.ref(); } /*! diff --git a/tests/auto/corelib/tools/qcollator/tst_qcollator.cpp b/tests/auto/corelib/tools/qcollator/tst_qcollator.cpp index 480e723f44..00b22dab6c 100644 --- a/tests/auto/corelib/tools/qcollator/tst_qcollator.cpp +++ b/tests/auto/corelib/tools/qcollator/tst_qcollator.cpp @@ -72,6 +72,9 @@ void tst_QCollator::moveSemantics() QCOMPARE(c2.locale(), de_AT); QVERIFY(dpointer_is_null(c1)); + QCollator c3(c1); + QVERIFY(dpointer_is_null(c3)); + c1 = std::move(c2); QCOMPARE(c1.locale(), de_AT); QVERIFY(dpointer_is_null(c2));