[Bf-blender-cvs] [213e9ae] blender-v2.78-release: Fix: Grease Pencil sculpting crashes when sculpting on layers without any strokes

Joshua Leung noreply at git.blender.org
Thu Sep 22 11:15:33 CEST 2016


Commit: 213e9aeb8c8758de92505212b9817d7bd21fd0dd
Author: Joshua Leung
Date:   Wed Sep 21 17:02:17 2016 +1200
Branches: blender-v2.78-release
https://developer.blender.org/rB213e9aeb8c8758de92505212b9817d7bd21fd0dd

Fix: Grease Pencil sculpting crashes when sculpting on layers without any strokes

Reported by @loochmunz. I've also gone through checking for and fixing other places
where this was also occurring.


To be included in 2.78

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

M	source/blender/editors/gpencil/gpencil_brush.c
M	source/blender/editors/gpencil/gpencil_edit.c

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

diff --git a/source/blender/editors/gpencil/gpencil_brush.c b/source/blender/editors/gpencil/gpencil_brush.c
index fcb2ce0..8576cbc 100644
--- a/source/blender/editors/gpencil/gpencil_brush.c
+++ b/source/blender/editors/gpencil/gpencil_brush.c
@@ -1350,6 +1350,10 @@ static bool gpsculpt_brush_apply_standard(bContext *C, tGP_BrushEditData *gso)
 
 	CTX_DATA_BEGIN(C, bGPDlayer *, gpl, editable_gpencil_layers)
 	{
+		bGPDframe *gpf = gpl->actframe;
+		if (gpf == NULL)
+			continue;
+		
 		/* calculate difference matrix if parent object */
 		if (gpl->parent != NULL) {
 			ED_gpencil_parent_location(gpl, diff_mat);
@@ -1358,10 +1362,8 @@ static bool gpsculpt_brush_apply_standard(bContext *C, tGP_BrushEditData *gso)
 		else {
 			parented = false;
 		}
-
-		bGPDframe *gpf = gpl->actframe;
-		bGPDstroke *gps;
-		for (gps = gpf->strokes.first; gps; gps = gps->next) {
+		
+		for (bGPDstroke *gps = gpf->strokes.first; gps; gps = gps->next) {
 			/* skip strokes that are invalid for current view */
 			if (ED_gpencil_stroke_can_use(C, gps) == false)
 				continue;
diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c
index 9f700e8..8301879 100644
--- a/source/blender/editors/gpencil/gpencil_edit.c
+++ b/source/blender/editors/gpencil/gpencil_edit.c
@@ -1502,6 +1502,9 @@ static int gp_stroke_cyclical_set_exec(bContext *C, wmOperator *op)
 	/* loop all selected strokes */
 	CTX_DATA_BEGIN(C, bGPDlayer *, gpl, editable_gpencil_layers)
 	{
+		if (gpl->actframe == NULL)
+			continue;
+			
 		for (bGPDstroke *gps = gpl->actframe->strokes.last; gps; gps = gps->prev) {
 			bGPDpalettecolor *palcolor = gps->palcolor;
 			
@@ -1722,6 +1725,9 @@ static int gp_stroke_join_exec(bContext *C, wmOperator *op)
 	CTX_DATA_BEGIN(C, bGPDlayer *, gpl, editable_gpencil_layers)
 	{
 		bGPDframe *gpf = gpl->actframe;
+		if (gpf == NULL)
+			continue;
+		
 		for (gps = gpf->strokes.first; gps; gps = gpsn) {
 			gpsn = gps->next;
 			if (gps->flag & GP_STROKE_SELECT) {




More information about the Bf-blender-cvs mailing list