diff options
-rw-r--r-- | src/gui/rhi/qshader.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/gui/rhi/qshader.cpp b/src/gui/rhi/qshader.cpp index 85a0271272..e27ac8365e 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; |