[Bf-blender-cvs] [2625c39ce77] master: Fix T102092: GPencil Sculpt Grab crash using Shift key

Antonio Vazquez noreply at git.blender.org
Thu Oct 27 16:47:24 CEST 2022


Commit: 2625c39ce77ba303e44d9ea90ee8d1bc09c0f336
Author: Antonio Vazquez
Date:   Thu Oct 27 16:46:51 2022 +0200
Branches: master
https://developer.blender.org/rB2625c39ce77ba303e44d9ea90ee8d1bc09c0f336

Fix T102092: GPencil Sculpt Grab crash using Shift key

There was a problem with the hash table that was 
not created as expected.

Also fixed an unreported memory leak in Grab tool not
related to this crash but detected during debug.

===================================================================

M	source/blender/editors/gpencil/gpencil_sculpt_paint.c

===================================================================

diff --git a/source/blender/editors/gpencil/gpencil_sculpt_paint.c b/source/blender/editors/gpencil/gpencil_sculpt_paint.c
index 9b934876ebb..3b7336f41e8 100644
--- a/source/blender/editors/gpencil/gpencil_sculpt_paint.c
+++ b/source/blender/editors/gpencil/gpencil_sculpt_paint.c
@@ -1202,6 +1202,9 @@ static bool gpencil_sculpt_brush_init(bContext *C, wmOperator *op)
     gso->automasking_strokes = BLI_ghash_ptr_new(__func__);
   }
   else {
+    if (gso->automasking_strokes != NULL) {
+      BLI_ghash_free(gso->automasking_strokes, NULL, NULL);
+    }
     gso->automasking_strokes = NULL;
   }
   /* save mask */
@@ -1292,6 +1295,10 @@ static void gpencil_sculpt_brush_exit(bContext *C, wmOperator *op)
     }
 
     default:
+      if (gso->stroke_customdata != NULL) {
+        BLI_ghash_free(gso->stroke_customdata, NULL, NULL);
+        gso->stroke_customdata = NULL;
+      }
       break;
   }
 
@@ -2075,6 +2082,20 @@ static void gpencil_sculpt_brush_apply_event(bContext *C, wmOperator *op, const
     if (gso->brush == NULL) {
       gso->brush = gso->brush_prev;
     }
+    Brush *brush = gso->brush;
+    if (brush->gpencil_settings->sculpt_mode_flag &
+        (GP_SCULPT_FLAGMODE_AUTOMASK_STROKE | GP_SCULPT_FLAGMODE_AUTOMASK_LAYER |
+         GP_SCULPT_FLAGMODE_AUTOMASK_MATERIAL)) {
+      if (gso->automasking_strokes == NULL) {
+        gso->automasking_strokes = BLI_ghash_ptr_new(__func__);
+      }
+    }
+    else {
+      if (gso->automasking_strokes != NULL) {
+        BLI_ghash_free(gso->automasking_strokes, NULL, NULL);
+      }
+      gso->automasking_strokes = NULL;
+    }
   }
   else {
     if (gso->brush_prev != NULL) {



More information about the Bf-blender-cvs mailing list