Fix #122883: Crash converting to curves object with no GPv3 drawings

When converting GPv3 object with zero drawings to curves, Blender crashes
due to accessing invalid drawing/offset value.

With `curve to mesh` node, the evaluated `gemoetry_set` had
a dummy GPv3 object data with zero drawings, see
`BKE_grease_pencil_data_update`. Hence, the crash in
`object_convert_exec` while accessing the offset array.

Pull Request: https://projects.blender.org/blender/blender/pulls/123067
This commit is contained in:
Pratik Borhade
2024-06-11 18:29:05 +02:00
committed by Falk David
parent cea18e62c5
commit 950f5eef91

View File

@@ -3416,11 +3416,13 @@ static int object_convert_exec(bContext *C, wmOperator *op)
curves_id->geometry.wrap() = drawings[i].drawing.strokes();
geometries[i] = bke::GeometrySet::from_curves(curves_id);
}
bke::GeometrySet joined_curves = geometry::join_geometries(geometries, {});
if (geometries.size() > 0) {
bke::GeometrySet joined_curves = geometry::join_geometries(geometries, {});
new_curves->geometry.wrap() = joined_curves.get_curves()->geometry.wrap();
new_curves->geometry.wrap().tag_topology_changed();
BKE_object_material_from_eval_data(bmain, newob, &joined_curves.get_curves()->id);
new_curves->geometry.wrap() = joined_curves.get_curves()->geometry.wrap();
new_curves->geometry.wrap().tag_topology_changed();
BKE_object_material_from_eval_data(bmain, newob, &joined_curves.get_curves()->id);
}
}
BKE_object_free_derived_caches(newob);