[gtk+/wip/matthiasc/gadget: 22/34] css node: Warn more



commit dce4994d0d7efbd02fa2824d7d6b22f3f9b6b6b6
Author: Matthias Clasen <mclasen redhat com>
Date:   Tue Dec 8 16:51:21 2015 -0500

    css node: Warn more
    
    gtk_css_node_insert_before/after can easily create cycles
    which later lead to stack overflows. Even if we're not
    catching all cycles here, at least we can detect obviously
    invalid arguments, such as inserting a node next to itself.

 gtk/gtkcssnode.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkcssnode.c b/gtk/gtkcssnode.c
index a1bbe77..dc963e2 100644
--- a/gtk/gtkcssnode.c
+++ b/gtk/gtkcssnode.c
@@ -873,6 +873,7 @@ gtk_css_node_insert_after (GtkCssNode *parent,
                            GtkCssNode *previous_sibling)
 {
   g_return_if_fail (previous_sibling == NULL || previous_sibling->parent == parent);
+  g_return_if_fail (cssnode != previous_sibling);
 
   if (cssnode->previous_sibling == previous_sibling &&
       cssnode->parent == parent)
@@ -890,6 +891,7 @@ gtk_css_node_insert_before (GtkCssNode *parent,
                             GtkCssNode *next_sibling)
 {
   g_return_if_fail (next_sibling == NULL || next_sibling->parent == parent);
+  g_return_if_fail (cssnode != next_sibling);
 
   if (cssnode->next_sibling == next_sibling && 
       cssnode->parent == parent)


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