From a00497fd70def70a84a6d75d0b0ab9e51586b48d Mon Sep 17 00:00:00 2001 From: Ivan Mahonin Date: Dec 09 2019 08:54:32 +0000 Subject: fix refcounter in Resource::Storage --- diff --git a/synfig-core/src/synfig/rendering/resource.cpp b/synfig-core/src/synfig/rendering/resource.cpp index 3c03a98..a41cb43 100644 --- a/synfig-core/src/synfig/rendering/resource.cpp +++ b/synfig-core/src/synfig/rendering/resource.cpp @@ -59,21 +59,20 @@ Resource::Storage::ref() const bool Resource::Storage::unref_inactive() const { - return refcount == 0 || --refcount != (int)resources.size(); + return --refcount > (int)resources.size(); } bool Resource::Storage::unref() const { - if (refcount == 0) return true; - if (--refcount == (int)resources.size()) + if (--refcount > (int)resources.size()) { refcount = 0; const_cast(this)->resources.clear(); #ifdef ETL_SELF_DELETING_SHARED_OBJECT delete this; #endif - return true; + return false; } return true; }