From 2e9785db8a6dfb673371176d025ec72b97dbfa5c Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 29 Jun 2024 09:30:44 -0400 Subject: [PATCH] snapshot: Don't crash and don't leak We were trying to handle a NULL mask child, unsuccessfully. Pointed out by Niels De Graef. --- gtk/gtksnapshot.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/gtk/gtksnapshot.c b/gtk/gtksnapshot.c index 34bc8a798d..d7f3c9311d 100644 --- a/gtk/gtksnapshot.c +++ b/gtk/gtksnapshot.c @@ -1530,16 +1530,17 @@ gtk_snapshot_collect_mask_source (GtkSnapshot *snapshot, { GskRenderNode *source_child, *mask_child, *mask_node; - mask_child = gsk_render_node_ref (state->data.mask.mask_node); + mask_child = state->data.mask.mask_node; source_child = gtk_snapshot_collect_default (snapshot, state, nodes, n_nodes); - - if (source_child == NULL || mask_child == NULL) + if (source_child == NULL) return NULL; - mask_node = gsk_mask_node_new (source_child, mask_child, state->data.mask.mask_mode); + if (mask_child) + mask_node = gsk_mask_node_new (source_child, mask_child, state->data.mask.mask_mode); + else + mask_node = NULL; gsk_render_node_unref (source_child); - gsk_render_node_unref (mask_child); return mask_node; }