Fix T92760: Crash erasing GPencil when occlusion test is enabled

`pt0` was read when `NULL` and `is_occluded_pt1` could be read even if
it is not initialized.
This commit is contained in:
Germano Cavalcante 2021-11-03 10:21:56 -03:00
parent 42d0107ee5
commit f81190f85f
Notes: blender-bot 2023-02-14 07:25:51 +01:00
Referenced by issue #88449: Blender LTS: Maintenance Task 2.93
Referenced by issue #88449, Blender LTS: Maintenance Task 2.93
Referenced by issue #92760, Crash erasing GPencil when occlusion test is enabled
1 changed files with 6 additions and 4 deletions

View File

@ -1582,10 +1582,12 @@ static void gpencil_stroke_eraser_dostroke(tGPsdata *p,
*/
if (gpencil_stroke_inside_circle(mval, radius, pc0[0], pc0[1], pc2[0], pc2[1])) {
bool is_occluded_pt0, is_occluded_pt1, is_occluded_pt2 = true;
is_occluded_pt0 = (pt0 && ((pt0->flag & GP_SPOINT_TEMP_TAG) != 0)) ?
((pt0->flag & GP_SPOINT_TEMP_TAG2) != 0) :
gpencil_stroke_eraser_is_occluded(p, gpl, pt0, pc0[0], pc0[1]);
bool is_occluded_pt0 = true, is_occluded_pt1 = true, is_occluded_pt2 = true;
if (pt0) {
is_occluded_pt0 = ((pt0->flag & GP_SPOINT_TEMP_TAG) != 0) ?
((pt0->flag & GP_SPOINT_TEMP_TAG2) != 0) :
gpencil_stroke_eraser_is_occluded(p, gpl, pt0, pc0[0], pc0[1]);
}
if (is_occluded_pt0) {
is_occluded_pt1 = ((pt1->flag & GP_SPOINT_TEMP_TAG) != 0) ?
((pt1->flag & GP_SPOINT_TEMP_TAG2) != 0) :