diff options
author | Paolo Borelli <pborelli@gnome.org> | 2018-07-24 09:22:59 +0200 |
---|---|---|
committer | Paolo Borelli <pborelli@gnome.org> | 2018-07-24 11:13:36 +0200 |
commit | ca96a9b0a71232e8eab1fe992ee94139a632acb9 (patch) | |
tree | cc6c4f0a841d64b0738cca0126f7543199088368 /librsvg | |
parent | 02060d0bc1a7247f957e6003b2f95c7b0a5fc891 (diff) | |
download | librsvg-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.c | 25 |
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; |