Fix crash drawing armatures in edit-mode

ArmatureDrawContext::bcolor wasn't initialized causing a crash.
Resolve by initialing the whole struct to zero.
This commit is contained in:
Campbell Barton
2023-07-28 11:30:15 +10:00
parent 9a37a206cf
commit a478a4cd92

View File

@@ -2759,6 +2759,7 @@ static void armature_context_setup(ArmatureDrawContext *ctx,
const eArmatureDrawMode draw_mode,
const float *const_color)
{
BLI_assert(BLI_memory_is_zero(ctx, sizeof(*ctx)));
const bool is_edit_or_pose_mode = draw_mode != ARM_DRAW_MODE_OBJECT;
const bool is_xray = (ob->dtx & OB_DRAW_IN_FRONT) != 0 ||
(pd->armature.do_pose_xray && draw_mode == ARM_DRAW_MODE_POSE);
@@ -2802,7 +2803,7 @@ static void armature_context_setup(ArmatureDrawContext *ctx,
void OVERLAY_edit_armature_cache_populate(OVERLAY_Data *vedata, Object *ob)
{
OVERLAY_PrivateData *pd = vedata->stl->pd;
ArmatureDrawContext arm_ctx;
ArmatureDrawContext arm_ctx = {nullptr};
armature_context_setup(&arm_ctx, pd, ob, ARM_DRAW_MODE_EDIT, nullptr);
draw_armature_edit(&arm_ctx);
}
@@ -2810,7 +2811,7 @@ void OVERLAY_edit_armature_cache_populate(OVERLAY_Data *vedata, Object *ob)
void OVERLAY_pose_armature_cache_populate(OVERLAY_Data *vedata, Object *ob)
{
OVERLAY_PrivateData *pd = vedata->stl->pd;
ArmatureDrawContext arm_ctx;
ArmatureDrawContext arm_ctx = {nullptr};
armature_context_setup(&arm_ctx, pd, ob, ARM_DRAW_MODE_POSE, nullptr);
draw_armature_pose(&arm_ctx);
}
@@ -2819,7 +2820,7 @@ void OVERLAY_armature_cache_populate(OVERLAY_Data *vedata, Object *ob)
{
const DRWContextState *draw_ctx = DRW_context_state_get();
OVERLAY_PrivateData *pd = vedata->stl->pd;
ArmatureDrawContext arm_ctx;
ArmatureDrawContext arm_ctx = {nullptr};
float *color;
if (ob->dt == OB_BOUNDBOX) {