summaryrefslogtreecommitdiffstats
path: root/src/object/sp-object.h
diff options
context:
space:
mode:
authorTavmjong Bah <tavmjong@free.fr>2019-10-18 12:54:47 +0000
committerTavmjong Bah <tavmjong@free.fr>2019-10-18 12:54:47 +0000
commitca8f8f8e647393e937e4c8f7ff5a029d30fbbd18 (patch)
tree252dba87bab464165633210f892fd4c8a9a578c9 /src/object/sp-object.h
parentfix heap-use-after-free (diff)
downloadinkscape-ca8f8f8e647393e937e4c8f7ff5a029d30fbbd18.tar.gz
inkscape-ca8f8f8e647393e937e4c8f7ff5a029d30fbbd18.zip
Make href and unhref member functions of SPObject.
Diffstat (limited to 'src/object/sp-object.h')
-rw-r--r--src/object/sp-object.h46
1 files changed, 21 insertions, 25 deletions
diff --git a/src/object/sp-object.h b/src/object/sp-object.h
index 190f24253..77e5947ad 100644
--- a/src/object/sp-object.h
+++ b/src/object/sp-object.h
@@ -154,31 +154,6 @@ SPObject *sp_object_ref(SPObject *object, SPObject *owner=nullptr);
SPObject *sp_object_unref(SPObject *object, SPObject *owner=nullptr);
/**
- * Increase weak refcount.
- *
- * Hrefcount is used for weak references, for example, to
- * determine whether any graphical element references a certain gradient
- * node.
- * @param owner Ignored.
- * @return object, NULL is error
- * \pre object points to real object
- * @todo need to move this to be a member of SPObject.
- */
-SPObject *sp_object_href(SPObject *object, SPObject* owner);
-
-/**
- * Decrease weak refcount.
- *
- * Hrefcount is used for weak references, for example, to determine whether
- * any graphical element references a certain gradient node.
- * @param owner Ignored.
- * @return always NULL
- * \pre object points to real object and hrefcount>0
- * @todo need to move this to be a member of SPObject.
- */
-SPObject *sp_object_hunref(SPObject *object, SPObject* owner);
-
-/**
* SPObject is an abstract base class of all of the document nodes at the
* SVG document level. Each SPObject subclass implements a certain SVG
* element node type, or is an abstract base class for different node
@@ -447,6 +422,27 @@ public:
}
/**
+ * Increase weak refcount.
+ *
+ * Hrefcount is used for weak references, for example, to
+ * determine whether any graphical element references a certain gradient
+ * node.
+ * It keeps a list of "owners".
+ * @param owner Used to track who uses this object.
+ */
+ void hrefObject(SPObject* owner = nullptr);
+
+ /**
+ * Decrease weak refcount.
+ *
+ * Hrefcount is used for weak references, for example, to determine whether
+ * any graphical element references a certain gradient node.
+ * @param owner Used to track who uses this object.
+ * \pre hrefcount>0
+ */
+ void unhrefObject(SPObject* owner = nullptr);
+
+ /**
* Check if object is referenced by any other object.
*/
bool isReferenced() { return ( _total_hrefcount > 0 ); }