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.
This commit is contained in:
Antonio Vazquez 2022-10-27 16:46:51 +02:00 committed by Philipp Oeser
parent b43cfae49c
commit 9676cb6d8d
Notes: blender-bot 2023-02-14 00:13:36 +01:00
Referenced by issue #100749, Blender LTS: Maintenance Task 3.3
Referenced by issue #102092, GPencil: Crashes  Sculpt > Smooth Brush with [Shift Key] and with Auto Masking Stroke On
1 changed files with 21 additions and 0 deletions

View File

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