Commit: 39d7c111dbed051d5ac29e7f05fb9b346e4f0ce7
Author: Antonio Vazquez
Date:   Fri Jul 31 18:20:27 2020 +0200
Branches: blender-v2.83-release
https://developer.blender.org/rB39d7c111dbed051d5ac29e7f05fb9b346e4f0ce7

Fix T78884: GPencil weight paint crash when painting over modifier generated 
points

The weight must be added only to the real points, not to the autogenerated 
points by modifiers. This affects, not only to subdivide, but to any modifier 
that generate points.

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

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

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

diff --git a/source/blender/editors/gpencil/gpencil_weight_paint.c 
b/source/blender/editors/gpencil/gpencil_weight_paint.c
index 2ebf1aba353..a1006904294 100644
--- a/source/blender/editors/gpencil/gpencil_weight_paint.c
+++ b/source/blender/editors/gpencil/gpencil_weight_paint.c
@@ -453,9 +453,9 @@ static void 
gp_weightpaint_select_stroke(tGP_BrushWeightpaintData *gso,
 
           /* To each point individually... */
           pt = &gps->points[i];
-          pt_active = (pt->runtime.pt_orig) ? pt->runtime.pt_orig : pt;
-          index = (pt->runtime.pt_orig) ? pt->runtime.idx_orig : i;
+          pt_active = pt->runtime.pt_orig;
           if (pt_active != NULL) {
+            index = (pt->runtime.pt_orig) ? pt->runtime.idx_orig : i;
             gp_save_selected_point(gso, gps_active, index, pc1);
           }
 
@@ -469,9 +469,9 @@ static void 
gp_weightpaint_select_stroke(tGP_BrushWeightpaintData *gso,
            */
           if (i + 1 == gps->totpoints - 1) {
             pt = &gps->points[i + 1];
-            pt_active = (pt->runtime.pt_orig) ? pt->runtime.pt_orig : pt;
-            index = (pt->runtime.pt_orig) ? pt->runtime.idx_orig : i + 1;
+            pt_active = pt->runtime.pt_orig;
             if (pt_active != NULL) {
+              index = (pt->runtime.pt_orig) ? pt->runtime.idx_orig : i + 1;
               gp_save_selected_point(gso, gps_active, index, pc2);
               include_last = false;
             }
@@ -487,9 +487,9 @@ static void 
gp_weightpaint_select_stroke(tGP_BrushWeightpaintData *gso,
            * (but wasn't added then, to avoid double-ups).
            */
           pt = &gps->points[i];
-          pt_active = (pt->runtime.pt_orig) ? pt->runtime.pt_orig : pt;
-          index = (pt->runtime.pt_orig) ? pt->runtime.idx_orig : i;
+          pt_active = pt->runtime.pt_orig;
           if (pt_active != NULL) {
+            index = (pt->runtime.pt_orig) ? pt->runtime.idx_orig : i;
             gp_save_selected_point(gso, gps_active, index, pc1);
 
             include_last = false;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to