diff options
author | Antonio Vazquez <blendergit@gmail.com> | 2021-12-28 18:07:07 +0300 |
---|---|---|
committer | Antonio Vazquez <blendergit@gmail.com> | 2021-12-28 18:07:07 +0300 |
commit | bd9d09ca829994ef30fb29debbb78612bdf9e3bd (patch) | |
tree | 5273740c147707f0d1725bc523a4040a00195cda | |
parent | 9bacd543124e6fb971842b3fbf0e03079f7da3d7 (diff) |
Fix T94439: Some GPencil operators crash when calling from console
This fix avoid the segment fault for several operators.
-rw-r--r-- | source/blender/editors/gpencil/gpencil_mesh.c | 3 | ||||
-rw-r--r-- | source/blender/editors/object/object_gpencil_modifier.c | 11 |
2 files changed, 14 insertions, 0 deletions
diff --git a/source/blender/editors/gpencil/gpencil_mesh.c b/source/blender/editors/gpencil/gpencil_mesh.c index 11e02b9832f..efe29e852f2 100644 --- a/source/blender/editors/gpencil/gpencil_mesh.c +++ b/source/blender/editors/gpencil/gpencil_mesh.c @@ -142,6 +142,9 @@ static bool gpencil_bake_ob_list(bContext *C, Depsgraph *depsgraph, Scene *scene /* Add active object. In some files this could not be in selected array. */ Object *obact = CTX_data_active_object(C); + if (obact == NULL) { + return false; + } if (obact->type == OB_MESH) { elem = MEM_callocN(sizeof(GpBakeOb), __func__); diff --git a/source/blender/editors/object/object_gpencil_modifier.c b/source/blender/editors/object/object_gpencil_modifier.c index e3c2932e17a..3fd11a101a5 100644 --- a/source/blender/editors/object/object_gpencil_modifier.c +++ b/source/blender/editors/object/object_gpencil_modifier.c @@ -968,6 +968,9 @@ static int dash_segment_add_exec(bContext *C, wmOperator *op) DashGpencilModifierData *dmd = (DashGpencilModifierData *)gpencil_edit_modifier_property_get( op, ob, eGpencilModifierType_Dash); + if (dmd == NULL) { + return OPERATOR_FINISHED; + } const int new_active_index = dmd->segment_active_index + 1; DashGpencilModifierSegment *new_segments = MEM_malloc_arrayN( dmd->segments_len + 1, sizeof(DashGpencilModifierSegment), __func__); @@ -1032,6 +1035,10 @@ static int dash_segment_remove_exec(bContext *C, wmOperator *op) DashGpencilModifierData *dmd = (DashGpencilModifierData *)gpencil_edit_modifier_property_get( op, ob, eGpencilModifierType_Dash); + if (dmd == NULL) { + return OPERATOR_FINISHED; + } + if (dmd->segment_active_index < 0 || dmd->segment_active_index >= dmd->segments_len) { return OPERATOR_CANCELLED; } @@ -1108,6 +1115,10 @@ static int dash_segment_move_exec(bContext *C, wmOperator *op) DashGpencilModifierData *dmd = (DashGpencilModifierData *)gpencil_edit_modifier_property_get( op, ob, eGpencilModifierType_Dash); + if (dmd == NULL) { + return OPERATOR_FINISHED; + } + if (dmd->segments_len < 2) { return OPERATOR_CANCELLED; } |