Eo: Added a phantom ref if we manual free.
authortasn <tasn>
Wed, 6 Jun 2012 11:41:53 +0000 (11:41 +0000)
committertasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 6 Jun 2012 11:41:53 +0000 (11:41 +0000)
This lets us use eo_do and the such on deleted to be manually freed objects.

git-svn-id: http://svn.enlightenment.org/svn/e/trunk/PROTO/eobj@71746 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

lib/eo.c

index c9ab366..1edd486 100644 (file)
--- a/lib/eo.c
+++ b/lib/eo.c
@@ -1291,7 +1291,10 @@ _eo_unref(Eo *obj)
           }
 #endif
 
-        if (!obj->manual_free) _eo_free(obj);
+        if (!obj->manual_free)
+           _eo_free(obj);
+        else
+           _eo_ref(obj); /* If we manual free, we keep a phantom ref. */
      }
 }
 
@@ -1580,7 +1583,7 @@ eo_manual_free(Eo *obj)
         return;
      }
 
-   if (0 != obj->refcount)
+   if (!obj->del)
      {
         ERR("Tried deleting the object %p while still referenced(%d).", obj, eo_ref_get(obj));
         return;