summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@gnome.org>2020-02-25 11:07:34 -0600
committerFederico Mena Quintero <federico@gnome.org>2020-02-25 16:40:42 -0600
commit58f4a90031bbe5c96bdc6a5e3993ecb56afbb8c4 (patch)
tree8d64eac9371d5d6178483f967a6729c35575f3af
parent56696f2db7bcd56ba3d4652af20295679aebcb36 (diff)
downloadlibrsvg-58f4a90031bbe5c96bdc6a5e3993ecb56afbb8c4.tar.gz
Extract rsvg_drawing_ctx_acquire_node_ref() like in newer branches
-rw-r--r--librsvg/rsvg-base.c21
-rw-r--r--librsvg/rsvg-private.h2
2 files changed, 14 insertions, 9 deletions
diff --git a/librsvg/rsvg-base.c b/librsvg/rsvg-base.c
index 039fbf9e..8b8ba25d 100644
--- a/librsvg/rsvg-base.c
+++ b/librsvg/rsvg-base.c
@@ -1676,6 +1676,17 @@ limits_exceeded (RsvgDrawingCtx *draw_ctx)
return draw_ctx->num_elements_acquired > 500000;
}
+RsvgNode *
+rsvg_drawing_ctx_acquire_node_ref (RsvgDrawingCtx * ctx, RsvgNode *node)
+{
+ if (g_slist_find (ctx->acquired_nodes, node))
+ return NULL;
+
+ ctx->acquired_nodes = g_slist_prepend (ctx->acquired_nodes, node);
+
+ return node;
+}
+
/*
* rsvg_drawing_ctx_acquire_node:
* @ctx: The drawing context in use
@@ -1711,12 +1722,7 @@ rsvg_drawing_ctx_acquire_node (RsvgDrawingCtx * ctx, const char *url)
if (node == NULL)
return NULL;
- if (g_slist_find (ctx->acquired_nodes, node))
- return NULL;
-
- ctx->acquired_nodes = g_slist_prepend (ctx->acquired_nodes, node);
-
- return node;
+ return rsvg_drawing_ctx_acquire_node_ref (ctx, node);
}
/**
@@ -1773,9 +1779,6 @@ rsvg_drawing_ctx_release_node (RsvgDrawingCtx * ctx, RsvgNode *node)
if (node == NULL)
return;
- g_return_if_fail (ctx->acquired_nodes != NULL);
- g_return_if_fail (ctx->acquired_nodes->data == node);
-
ctx->acquired_nodes = g_slist_remove (ctx->acquired_nodes, node);
}
diff --git a/librsvg/rsvg-private.h b/librsvg/rsvg-private.h
index 340d1c8a..c9aba05e 100644
--- a/librsvg/rsvg-private.h
+++ b/librsvg/rsvg-private.h
@@ -502,6 +502,8 @@ RsvgNode *rsvg_drawing_ctx_acquire_node (RsvgDrawingCtx * ctx, const cha
G_GNUC_INTERNAL
RsvgNode *rsvg_drawing_ctx_acquire_node_of_type (RsvgDrawingCtx * ctx, const char *url, RsvgNodeType type);
G_GNUC_INTERNAL
+RsvgNode *rsvg_drawing_ctx_acquire_node_ref (RsvgDrawingCtx * ctx, RsvgNode *node);
+G_GNUC_INTERNAL
void rsvg_drawing_ctx_release_node (RsvgDrawingCtx * ctx, RsvgNode *node);
G_GNUC_INTERNAL