src/corelib/tools/qshareddata.h
changeset 37 758a864f9613
parent 18 2f34d5167611
--- a/src/corelib/tools/qshareddata.h	Fri Sep 17 08:34:18 2010 +0300
+++ b/src/corelib/tools/qshareddata.h	Mon Oct 04 01:19:32 2010 +0300
@@ -95,9 +95,10 @@
         if (o.d != d) {
             if (o.d)
                 o.d->ref.ref();
-            if (d && !d->ref.deref())
-                delete d;
+            T *old = d;
             d = o.d;
+            if (old && !old->ref.deref())
+                delete old;
         }
         return *this;
     }
@@ -105,9 +106,10 @@
         if (o != d) {
             if (o)
                 o->ref.ref();
-            if (d && !d->ref.deref())
-                delete d;
+            T *old = d;
             d = o;
+            if (old && !old->ref.deref())
+                delete old;
         }
         return *this;
     }
@@ -174,9 +176,10 @@
         if (o.d != d) {
             if (o.d)
                 o.d->ref.ref();
-            if (d && !d->ref.deref())
-                delete d;
+            T *old = d;
             d = o.d;
+            if (old && !old->ref.deref())
+                delete old;
         }
         return *this;
     }
@@ -184,9 +187,10 @@
         if (o != d) {
             if (o)
                 o->ref.ref();
-            if (d && !d->ref.deref())
-                delete d;
+            T *old = d;
             d = o;
+            if (old && !old->ref.deref())
+                delete old;
         }
         return *this;
     }