From f2dd4350b2b5250e66b70ef4067e3920551e39cf Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 8 Dec 2015 16:51:21 -0500 Subject: [PATCH] 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 file changed, 2 insertions(+) diff --git a/gtk/gtkcssnode.c b/gtk/gtkcssnode.c index 0772369fae..738d1e9116 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)