diff --git a/src/gui/rhi/qshader.cpp b/src/gui/rhi/qshader.cpp index 85a02712724..e27ac8365e6 100644 --- a/src/gui/rhi/qshader.cpp +++ b/src/gui/rhi/qshader.cpp @@ -241,7 +241,13 @@ QShader::QShader(const QShader &other) QShader &QShader::operator=(const QShader &other) { if (d) { - qAtomicAssign(d, other.d); + if (other.d) { + qAtomicAssign(d, other.d); + } else { + if (!d->ref.deref()) + delete d; + d = nullptr; + } } else if (other.d) { other.d->ref.ref(); d = other.d;