Switch to side-by-side view

--- a/src/utils/refcntr.h
+++ b/src/utils/refcntr.h
@@ -7,37 +7,43 @@
     int *pcount;
 public:
     RefCntr() 
-	: rep(0), pcount(0) 
+        : rep(0), pcount(0) 
     {}
     explicit RefCntr(X *pp) 
-	: rep(pp), pcount(new int(1)) 
+        : rep(pp), pcount(new int(1)) 
     {}
     RefCntr(const RefCntr &r) 
-	: rep(r.rep), pcount(r.pcount) 
+        : rep(r.rep), pcount(r.pcount) 
     { 
-	if (pcount)
-	    (*pcount)++;
+        if (pcount)
+            (*pcount)++;
     }
     RefCntr& operator=(const RefCntr& r) 
     {
-	if (rep == r.rep) 
-	    return *this;
-	if (pcount && --(*pcount) == 0) {
-	    delete rep;
-	    delete pcount;
-	}
-	rep = r.rep;
-	pcount = r.pcount;
-	if (pcount)
-	    (*pcount)++;
-	return  *this;
+        if (rep == r.rep) 
+            return *this;
+        if (pcount && --(*pcount) == 0) {
+            delete rep;
+            delete pcount;
+        }
+        rep = r.rep;
+        pcount = r.pcount;
+        if (pcount)
+            (*pcount)++;
+        return  *this;
+    }
+    void release()
+    {
+        if (pcount && --(*pcount) == 0) {
+            delete rep;
+            delete pcount;
+        }
+        rep = 0;
+        pcount = 0;
     }
     ~RefCntr() 
     {
-	if (pcount && --(*pcount) == 0) {
-	    delete rep; 
-	    delete pcount; 
-	}
+        release();
     }
     X *operator->() {return rep;}
     X *getptr() const {return rep;}