[Bf-blender-cvs] [29fb12da589] master: Fix T83510: Convert Gpencil to curve crash when stroke has zero points

Antonio Vazquez noreply at git.blender.org
Mon Dec 7 19:08:42 CET 2020


Commit: 29fb12da589eeb3bbc31b81874526208b35334cb
Author: Antonio Vazquez
Date:   Mon Dec 7 19:08:29 2020 +0100
Branches: master
https://developer.blender.org/rB29fb12da589eeb3bbc31b81874526208b35334cb

Fix T83510: Convert Gpencil to curve crash when stroke has zero points

If the stroke had zero points the pointer returned NULL.

Also replaced for loop by FOREACH macro.

This is a corner case of "empty" strokes without points.

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

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

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

diff --git a/source/blender/editors/gpencil/gpencil_convert.c b/source/blender/editors/gpencil/gpencil_convert.c
index 33b02d525d5..63aa242275a 100644
--- a/source/blender/editors/gpencil/gpencil_convert.c
+++ b/source/blender/editors/gpencil/gpencil_convert.c
@@ -1312,7 +1312,7 @@ static void gpencil_layer_to_curve(bContext *C,
   Scene *scene = CTX_data_scene(C);
 
   bGPDframe *gpf = BKE_gpencil_layer_frame_get(gpl, CFRA, GP_GETFRAME_USE_PREV);
-  bGPDstroke *gps, *prev_gps = NULL;
+  bGPDstroke *prev_gps = NULL;
   Object *ob;
   Curve *cu;
   Nurb *nu = NULL;
@@ -1353,7 +1353,10 @@ static void gpencil_layer_to_curve(bContext *C,
   gtd->inittime = ((bGPDstroke *)gpf->strokes.first)->inittime;
 
   /* add points to curve */
-  for (gps = gpf->strokes.first; gps; gps = gps->next) {
+  LISTBASE_FOREACH (bGPDstroke *, gps, &gpf->strokes) {
+    if (gps->totpoints < 1) {
+      continue;
+    }
     const bool add_start_point = (link_strokes && !(prev_gps));
     const bool add_end_point = (link_strokes && !(gps->next));



More information about the Bf-blender-cvs mailing list