[librsvg] pattern_apply_fallback(): Don't access node->children->len directly



commit 3449c93c7fbb696d4217fd74cfbe68cc43f4353f
Author: Federico Mena Quintero <federico gnome org>
Date:   Thu Jan 26 20:28:13 2017 -0600

    pattern_apply_fallback(): Don't access node->children->len directly
    
    Use a helper function to see if a node has any children at all.

 rsvg-paint-server.c |   20 +++++++++++++++++++-
 1 files changed, 19 insertions(+), 1 deletions(-)
---
diff --git a/rsvg-paint-server.c b/rsvg-paint-server.c
index 07860d8..c465c29 100644
--- a/rsvg-paint-server.c
+++ b/rsvg-paint-server.c
@@ -545,6 +545,24 @@ pattern_get_fallback (RsvgNode *node)
         return NULL;
 }
 
+static gboolean
+has_children_foreach (RsvgNode *node, gpointer data)
+{
+    gboolean *has_child = data;
+
+    *has_child = TRUE;
+    return FALSE; /* stop since we found a child */
+}
+
+static gboolean
+has_children (RsvgNode *node)
+{
+    gboolean has_child = FALSE;
+
+    rsvg_node_foreach_child (node, has_children_foreach, &has_child);
+    return has_child;
+}
+
 static void
 pattern_apply_fallback (RsvgNode *pattern_node, RsvgNode *fallback_node)
 {
@@ -594,7 +612,7 @@ pattern_apply_fallback (RsvgNode *pattern_node, RsvgNode *fallback_node)
         pattern->hascbox = TRUE;
         pattern->obj_cbbox = fallback->obj_cbbox;
     }
-    if (!pattern->super.children->len && fallback->super.children->len) {
+    if (!has_children (pattern_node) && has_children (fallback_node)) {
         pattern->super.children = fallback->super.children;
     }
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]