diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h index 6d51d940c5b..dcfc10dc151 100644 --- a/src/corelib/kernel/qvariant.h +++ b/src/corelib/kernel/qvariant.h @@ -496,6 +496,7 @@ public: // If possible we reuse the current QVariant private. if (isDetached() && d.type() == metaType) { *reinterpret_cast(const_cast(constData())) = std::forward(avalue); + d.is_null = false; } else { *this = QVariant::fromValue(std::forward(avalue)); } diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp index 68ab515623a..1a6608875f6 100644 --- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp +++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp @@ -541,6 +541,9 @@ void tst_QVariant::isNull() var3 = QVariant(QMetaType::fromType()); QVERIFY( var3.isNull() ); + var3.setValue(QString()); + QVERIFY( !var3.isNull() ); + QVariant var4( 0 ); QVERIFY( !var4.isNull() );