[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