- disabled gui for a moment
[enigma2.git] / lib / base / smartptr.h
index c89763e37fe98ed8666ee1593de17ea0d0dcd030..aafecf0eacfc169e8fe8c8872c9ea138023bcad5 100644 (file)
@@ -43,21 +43,21 @@ public:
        }
        ePtr &operator=(T *c)
        {
+               if (c)
+                       c->AddRef();
                if (ptr)
                        ptr->Release();
                ptr=c;
-               if (ptr)
-                       ptr->AddRef();
                return *this;
        }
        
        ePtr &operator=(ePtr<T> &c)
        {
+               if (c.ptr)
+                       c.ptr->AddRef();
                if (ptr)
                        ptr->Release();
                ptr=c.ptr;
-               if (ptr)
-                       ptr->AddRef();
                return *this;
        }
        
@@ -66,6 +66,8 @@ public:
                if (ptr)
                        ptr->Release();
        }
+       
+       T* grabRef() { if (!ptr) return 0; ptr->AddRef(); return ptr; }
        T* &ptrref() { assert(!ptr); return ptr; }
        ePtrHelper<T> operator->() { assert(ptr); return ePtrHelper<T>(ptr); }