From 3840b84a970a2d2672ddae525b847c37faa4f3db Mon Sep 17 00:00:00 2001
From: Guillem <guillembartrina@gmail.com>
Date: Wed, 9 Sep 2020 12:34:48 +0200
Subject: [PATCH] move where the markings are disabled, old location used to
 crash the program

---
 pd/src/g_canvas.c | 3 ---
 pd/src/g_graph.c  | 3 +++
 pd/src/g_text.c   | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/pd/src/g_canvas.c b/pd/src/g_canvas.c
index d81d91108..5f18f75e2 100644
--- a/pd/src/g_canvas.c
+++ b/pd/src/g_canvas.c
@@ -1023,9 +1023,6 @@ void canvas_free(t_canvas *x)
 {
     //fprintf(stderr,"canvas_free %lx\n", (t_int)x);
 
-    if(x->gl_dirty)
-        canvas_dirtyclimb(x, 0);
-
     t_gobj *y;
     int dspstate = canvas_suspend_dsp();
 
diff --git a/pd/src/g_graph.c b/pd/src/g_graph.c
index 7f806a721..70c8b04f9 100644
--- a/pd/src/g_graph.c
+++ b/pd/src/g_graph.c
@@ -162,6 +162,9 @@ void glist_delete(t_glist *x, t_gobj *y)
           /* if we are a group, let's call ourselves a drawcommand */
           if (((t_canvas *)y)->gl_svg)
               drawcommand = 1;
+
+            if(((t_canvas *)y)->gl_dirty)
+                canvas_dirtyclimb((t_canvas *)y, 0);
         }
      
         wasdeleting = canvas_setdeleting(canvas, 1);
diff --git a/pd/src/g_text.c b/pd/src/g_text.c
index 6c875164c..d50b275db 100644
--- a/pd/src/g_text.c
+++ b/pd/src/g_text.c
@@ -2127,9 +2127,9 @@ static void text_vis(t_gobj *z, t_glist *glist, int vis)
                 if(pd_class(&x->te_pd) == canvas_class)
                 {
                     if (((t_canvas *)x)->gl_dirty)
-                        gobj_dirty(x, glist, 1);
+                        gobj_dirty(&x->te_g, glist, 1);
                     else if (((t_canvas *)x)->gl_subdirties)
-                        gobj_dirty(x, glist, 2);
+                        gobj_dirty(&x->te_g, glist, 2);
                 }
             }
         }
-- 
GitLab