[gtk/wip/chergert/fix-transform-ref] gskglrenderops: ref transform before releasing previous transform



commit bff61a1ef14c322c631cd14881f666574ba09ba1
Author: Christian Hergert <chergert redhat com>
Date:   Fri Jul 26 11:03:27 2019 -0700

    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) ||


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