[Bf-blender-cvs] [c2e7bf39535] blender-v3.4-release: GPencil: Fix unreported interpolate crash in empty layers

Antonio Vazquez noreply at git.blender.org
Thu Dec 15 11:38:57 CET 2022


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);



More information about the Bf-blender-cvs mailing list