Commit: c2e7bf395352d5745426de6c09945abb3a2e1a78
Author: Antonio Vazquez
Date:   Thu Dec 15 11:38:49 2022 +0100
Branches: blender-v3.4-release
https://developer.blender.org/rBc2e7bf395352d5745426de6c09945abb3a2e1a78

GPencil: Fix unreported interpolate crash in empty layers

If there is a layer that hasn't frames but is not the active layer
the pointer to frames can be NULL and crash.

Now, the empty layers are skipped.

Reported to me by Samuel Bernou.

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

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

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

diff --git a/source/blender/editors/gpencil/gpencil_interpolate.c 
b/source/blender/editors/gpencil/gpencil_interpolate.c
index cc25ed66b3d..9a5a3d5faea 100644
--- a/source/blender/editors/gpencil/gpencil_interpolate.c
+++ b/source/blender/editors/gpencil/gpencil_interpolate.c
@@ -479,15 +479,20 @@ static void gpencil_interpolate_set_points(bContext *C, 
tGPDinterpolate *tgpi)
       continue;
     }
 
-    /* create temp data for each layer */
-    tgpil = MEM_callocN(sizeof(tGPDinterpolate_layer), "GPencil Interpolate 
Layer");
+    bGPDframe *gpf_prv = gpencil_get_previous_keyframe(gpl, scene->r.cfra);
+    if (gpf_prv == NULL) {
+      continue;
+    }
+    bGPDframe *gpf_next = gpencil_get_next_keyframe(gpl, scene->r.cfra);
+    if (gpf_next == NULL) {
+      continue;
+    }
 
+    /* Create temp data for each layer. */
+    tgpil = MEM_callocN(sizeof(tGPDinterpolate_layer), "GPencil Interpolate 
Layer");
     tgpil->gpl = gpl;
-    bGPDframe *gpf = gpencil_get_previous_keyframe(gpl, scene->r.cfra);
-    tgpil->prevFrame = BKE_gpencil_frame_duplicate(gpf, true);
-
-    gpf = gpencil_get_next_keyframe(gpl, scene->r.cfra);
-    tgpil->nextFrame = BKE_gpencil_frame_duplicate(gpf, true);
+    tgpil->prevFrame = BKE_gpencil_frame_duplicate(gpf_prv, true);
+    tgpil->nextFrame = BKE_gpencil_frame_duplicate(gpf_next, true);
 
     BLI_addtail(&tgpi->ilayers, tgpil);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to