Ensure BKE_mesh_new_nomain_from_template() always has valid mxxx pointers
authorSybren A. Stüvel <sybren@stuvel.eu>
Wed, 6 Jun 2018 10:21:36 +0000 (12:21 +0200)
committerSybren A. Stüvel <sybren@stuvel.eu>
Wed, 6 Jun 2018 10:27:25 +0000 (12:27 +0200)
When the source mesh doesn't have the primary layers (CD_VERT for vdata,
etc.) the returned mesh also didn't have those layers, even when non-zero
elements were requested (for example requesting 4 vertices would still
result in mvert = NULL).

source/blender/blenkernel/intern/mesh.c

index f2a5f3b5d5fe2f529810944427855136fac6d73d..b325d8d02d9336cc0413ffcd09900a0d50214477 100644 (file)
@@ -670,6 +670,9 @@ static Mesh *mesh_new_nomain_from_template_ex(
                mesh_tessface_clear_intern(me_dst, false);
        }
 
+       /* The destination mesh should at least have valid primary CD layers,
+        * even in cases where the source mesh does not. */
+       mesh_ensure_cdlayers_primary(me_dst, do_tessface);
        mesh_ensure_cdlayers_origindex(me_dst, false);
        BKE_mesh_update_customdata_pointers(me_dst, false);