summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/rhi/qshader.cpp8
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;