From ca99a59605e52e6b4ec759523b1403b2b7e33ee7 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Thu, 2 Feb 2023 17:20:57 +0100 Subject: [PATCH] Fix T104261: crash when trying to draw viewer overlay for empty curve `BKE_displist_make_curveTypes` only sets `curve_eval` if the final geometry of the object actually contains curve data, otherwise it's null. --- .../draw/engines/overlay/overlay_viewer_attribute.cc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/source/blender/draw/engines/overlay/overlay_viewer_attribute.cc b/source/blender/draw/engines/overlay/overlay_viewer_attribute.cc index 69ff877c1e5..fe20fb135c5 100644 --- a/source/blender/draw/engines/overlay/overlay_viewer_attribute.cc +++ b/source/blender/draw/engines/overlay/overlay_viewer_attribute.cc @@ -131,11 +131,13 @@ static void populate_cache_for_geometry(Object &object, } case OB_CURVES_LEGACY: { Curve *curve = static_cast(object.data); - const bke::CurvesGeometry &curves = curve->curve_eval->geometry.wrap(); - if (curves.attributes().contains(".viewer")) { - GPUBatch *batch = DRW_cache_curve_edge_wire_viewer_attribute_get(&object); - DRW_shgroup_uniform_float_copy(pd.viewer_attribute_curve_grp, "opacity", opacity); - DRW_shgroup_call_obmat(pd.viewer_attribute_curve_grp, batch, object.object_to_world); + if (curve->curve_eval) { + const bke::CurvesGeometry &curves = curve->curve_eval->geometry.wrap(); + if (curves.attributes().contains(".viewer")) { + GPUBatch *batch = DRW_cache_curve_edge_wire_viewer_attribute_get(&object); + DRW_shgroup_uniform_float_copy(pd.viewer_attribute_curve_grp, "opacity", opacity); + DRW_shgroup_call_obmat(pd.viewer_attribute_curve_grp, batch, object.object_to_world); + } } break; }