snapshot: Don't critical on dispose
authorBenjamin Otte <otte.benjamin@googlemail.com>
Mon, 1 Aug 2022 20:28:46 +0000 (20:28 +0000)
committerBenjamin Otte <otte.benjamin@googlemail.com>
Mon, 1 Aug 2022 20:28:46 +0000 (20:28 +0000)
When there's remaining state that draws nothing, it returns no
rendernode. So do a NULL-check before unreffing it.

gtk/gtksnapshot.c

index 1896a207de8794addecde30da6da0fca9dd06383..afa27b45f1221c5bdff2aab07c93df31df237ab7 100644 (file)
@@ -163,7 +163,10 @@ gtk_snapshot_dispose (GObject *object)
   GtkSnapshot *snapshot = GTK_SNAPSHOT (object);
 
   if (!gtk_snapshot_states_is_empty (&snapshot->state_stack))
-    gsk_render_node_unref (gtk_snapshot_to_node (snapshot));
+    {
+      GskRenderNode *node = gtk_snapshot_to_node (snapshot);
+      g_clear_pointer (&node, gsk_render_node_unref);
+    }
 
   g_assert (gtk_snapshot_states_is_empty (&snapshot->state_stack));
   g_assert (gtk_snapshot_nodes_is_empty (&snapshot->nodes));