From bff61a1ef14c322c631cd14881f666574ba09ba1 Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Fri, 26 Jul 2019 11:03:27 -0700 Subject: [PATCH] gskglrenderops: ref transform before releasing previous transform Transforms may reference other transforms, so it is important to ref the incoming transform before releasing any previous one. Otherwise, we risk freeing the transform we wish to ref. --- gsk/gl/gskglrenderops.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gsk/gl/gskglrenderops.c b/gsk/gl/gskglrenderops.c index 7c02442d08..e7fa773889 100644 --- a/gsk/gl/gskglrenderops.c +++ b/gsk/gl/gskglrenderops.c @@ -233,11 +233,14 @@ ops_set_program (RenderOpBuilder *builder, if (program_state->modelview == NULL || !gsk_transform_equal (builder->current_modelview, program_state->modelview)) { + GskTransform *freeme; + op.op = OP_CHANGE_MODELVIEW; gsk_transform_to_matrix (builder->current_modelview, &op.modelview); g_array_append_val (builder->render_ops, op); - gsk_transform_unref (program_state->modelview); + freeme = program_state->modelview; program_state->modelview = gsk_transform_ref (builder->current_modelview); + gsk_transform_unref (freeme); } if (rect_equal (&empty_rect, &program_state->viewport) ||