diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2019-08-02 18:45:32 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2019-08-02 19:24:59 +0300 |
commit | 26d5fae2841d098d0e3be3b02d5d09458512c3a5 (patch) | |
tree | c830c04ef6f6dec0b93abaf5cc5895326fc81eb5 /source/blender/blenkernel/intern/mesh_convert.c | |
parent | dda0de4a3d09e8aed93718491f7dfb9366e8efd5 (diff) |
Fix T68135: Do not return NULL/None when converting an object to a mesh.
Does not make sense in the use-cases of that function, especially since
we don't know whether it is actually due to an error, or some glitch
(like an empty curve).
Think we always want to get a mesh when using either operator
conversion, or the `bpy.data.meshes.new_from_object` function.
Note that an assert was also added to ensure we do try to convert from a
valid 'geometry' object type.
Diffstat (limited to 'source/blender/blenkernel/intern/mesh_convert.c')
-rw-r--r-- | source/blender/blenkernel/intern/mesh_convert.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/mesh_convert.c b/source/blender/blenkernel/intern/mesh_convert.c index ae9cf874676..ee060a117dc 100644 --- a/source/blender/blenkernel/intern/mesh_convert.c +++ b/source/blender/blenkernel/intern/mesh_convert.c @@ -1216,10 +1216,14 @@ Mesh *BKE_mesh_new_from_object_to_bmain(Main *bmain, Object *object, bool preserve_all_data_layers) { + BLI_assert(ELEM(object->type, OB_FONT, OB_CURVE, OB_SURF, OB_MBALL, OB_MESH)); + Mesh *mesh = BKE_mesh_new_from_object(depsgraph, object, preserve_all_data_layers); if (mesh == NULL) { - /* Unable to convert the object to a mesh. */ - return NULL; + /* Unable to convert the object to a mesh, return an empty one. */ + Mesh *mesh_in_bmain = BKE_mesh_add(bmain, ((ID *)object->data)->name + 2); + id_us_min(&mesh_in_bmain->id); + return mesh_in_bmain; } /* Make sure mesh only points original datablocks, also increase users of materials and other |