summaryrefslogtreecommitdiff
path: root/librsvg
diff options
context:
space:
mode:
authorPaolo Borelli <pborelli@gnome.org>2018-07-24 09:22:59 +0200
committerPaolo Borelli <pborelli@gnome.org>2018-07-24 11:13:36 +0200
commitca96a9b0a71232e8eab1fe992ee94139a632acb9 (patch)
treecc6c4f0a841d64b0738cca0126f7543199088368 /librsvg
parent02060d0bc1a7247f957e6003b2f95c7b0a5fc891 (diff)
downloadlibrsvg-ca96a9b0a71232e8eab1fe992ee94139a632acb9.tar.gz
handle: use g_ptr_array_new_with_free_func for the nodes
Diffstat (limited to 'librsvg')
-rw-r--r--librsvg/rsvg-handle.c25
1 files changed, 5 insertions, 20 deletions
diff --git a/librsvg/rsvg-handle.c b/librsvg/rsvg-handle.c
index 41d4fe31..070bedfa 100644
--- a/librsvg/rsvg-handle.c
+++ b/librsvg/rsvg-handle.c
@@ -151,7 +151,7 @@ rsvg_handle_init (RsvgHandle * self)
self->priv->flags = RSVG_HANDLE_FLAGS_NONE;
self->priv->hstate = RSVG_HANDLE_STATE_START;
- self->priv->all_nodes = g_ptr_array_new ();
+ self->priv->all_nodes = g_ptr_array_new_with_free_func ((GDestroyNotify) rsvg_node_unref);
self->priv->defs = rsvg_defs_new (self);
self->priv->dpi_x = rsvg_internal_dpi_x;
self->priv->dpi_y = rsvg_internal_dpi_y;
@@ -177,24 +177,6 @@ rsvg_handle_init (RsvgHandle * self)
}
static void
-free_nodes (RsvgHandle *self)
-{
- int i;
-
- g_assert (self->priv->all_nodes != NULL);
-
- for (i = 0; i < self->priv->all_nodes->len; i++) {
- RsvgNode *node;
-
- node = g_ptr_array_index (self->priv->all_nodes, i);
- node = rsvg_node_unref (node);
- }
-
- g_ptr_array_free (self->priv->all_nodes, TRUE);
- self->priv->all_nodes = NULL;
-}
-
-static void
rsvg_handle_dispose (GObject *instance)
{
RsvgHandle *self = (RsvgHandle *) instance;
@@ -204,7 +186,10 @@ rsvg_handle_dispose (GObject *instance)
self->priv->is_disposed = TRUE;
- free_nodes (self);
+ if (self->priv->all_nodes) {
+ g_ptr_array_unref (self->priv->all_nodes);
+ self->priv->all_nodes = NULL;
+ }
rsvg_defs_free (self->priv->defs);
self->priv->defs = NULL;