[Bf-blender-cvs] [02fa1f0bba2] soc-2020-io-performance: Fix crash when exporting uv vertices with no UV map.
Ankit Meel
noreply at git.blender.org
Mon Jun 29 17:03:07 CEST 2020
Commit: 02fa1f0bba2bf2dd3ca94caa0971990f8a95f6e5
Author: Ankit Meel
Date: Mon Jun 29 20:33:01 2020 +0530
Branches: soc-2020-io-performance
https://developer.blender.org/rB02fa1f0bba2bf2dd3ca94caa0971990f8a95f6e5
Fix crash when exporting uv vertices with no UV map.
===================================================================
M source/blender/io/wavefront_obj/intern/wavefront_obj_exporter_mesh.cc
M source/blender/io/wavefront_obj/intern/wavefront_obj_file_handler.cc
===================================================================
diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter_mesh.cc b/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter_mesh.cc
index e7888c99c91..2f77ac483e2 100644
--- a/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter_mesh.cc
+++ b/source/blender/io/wavefront_obj/intern/wavefront_obj_exporter_mesh.cc
@@ -169,6 +169,10 @@ void OBJMesh::store_uv_coords_and_indices(Vector<std::array<float, 2>> &r_uv_coo
const int totpoly = _export_mesh_eval->totpoly;
const int totvert = _export_mesh_eval->totvert;
const MLoopUV *mloopuv = (MLoopUV *)CustomData_get_layer(&_export_mesh_eval->ldata, CD_MLOOPUV);
+ if (!mloopuv) {
+ _tot_uv_vertices = 0;
+ return;
+ }
const float limit[2] = {STD_UV_CONNECT_LIMIT, STD_UV_CONNECT_LIMIT};
UvVertMap *uv_vert_map = BKE_mesh_uv_vert_map_create(
diff --git a/source/blender/io/wavefront_obj/intern/wavefront_obj_file_handler.cc b/source/blender/io/wavefront_obj/intern/wavefront_obj_file_handler.cc
index 3713e27e235..3de2f0d3cfa 100644
--- a/source/blender/io/wavefront_obj/intern/wavefront_obj_file_handler.cc
+++ b/source/blender/io/wavefront_obj/intern/wavefront_obj_file_handler.cc
@@ -216,7 +216,7 @@ void OBJWriter::write_poly_indices(OBJMesh &obj_mesh_data, Span<Vector<uint>> uv
short last_face_mat_nr = -1;
if (_export_params->export_normals) {
- if (_export_params->export_uv) {
+ if (_export_params->export_uv && (obj_mesh_data.tot_uv_vertices() > 0)) {
/* Write both normals and UV indices. */
for (uint i = 0; i < obj_mesh_data.tot_poly_normals(); i++) {
obj_mesh_data.calc_poly_vertex_indices(vertex_indices, i);
@@ -241,7 +241,7 @@ void OBJWriter::write_poly_indices(OBJMesh &obj_mesh_data, Span<Vector<uint>> uv
}
else {
/* Write UV indices. */
- if (_export_params->export_uv) {
+ if (_export_params->export_uv && (obj_mesh_data.tot_uv_vertices() > 0)) {
for (uint i = 0; i < obj_mesh_data.tot_poly_normals(); i++) {
obj_mesh_data.calc_poly_vertex_indices(vertex_indices, i);
const MPoly &poly_to_write = obj_mesh_data.get_ith_poly(i);
More information about the Bf-blender-cvs
mailing list