[Bf-blender-cvs] [835753a] alembic_basic_io: Avoid trying to read unsupported/unknown data.

Kévin Dietrich noreply at git.blender.org
Tue Jun 21 14:11:06 CEST 2016


Commit: 835753ac6dc90eef571b6f542e4e1eb05f2264be
Author: Kévin Dietrich
Date:   Tue Jun 21 13:38:46 2016 +0200
Branches: alembic_basic_io
https://developer.blender.org/rB835753ac6dc90eef571b6f542e4e1eb05f2264be

Avoid trying to read unsupported/unknown data.

===================================================================

M	source/blender/alembic/intern/abc_customdata.cc

===================================================================

diff --git a/source/blender/alembic/intern/abc_customdata.cc b/source/blender/alembic/intern/abc_customdata.cc
index c7b568b..ed197e2 100644
--- a/source/blender/alembic/intern/abc_customdata.cc
+++ b/source/blender/alembic/intern/abc_customdata.cc
@@ -225,8 +225,7 @@ using Alembic::AbcGeom::IC4fGeomParam;
 using Alembic::AbcGeom::IV2fGeomParam;
 
 static void read_mcols(const CDStreamConfig &config, void *data,
-                       const C3fArraySamplePtr &c3f_ptr, const C4fArraySamplePtr &c4f_ptr,
-                       const Alembic::Abc::ISampleSelector &iss)
+                       const C3fArraySamplePtr &c3f_ptr, const C4fArraySamplePtr &c4f_ptr)
 {
 	MCol *cfaces = static_cast<MCol *>(data);
 	MPoly *polys = config.mpoly;
@@ -270,8 +269,7 @@ static void read_mcols(const CDStreamConfig &config, void *data,
 
 static void read_uvs(const CDStreamConfig &config, void *data,
                      const Alembic::AbcGeom::V2fArraySamplePtr &uvs,
-                     const Alembic::AbcGeom::UInt32ArraySamplePtr &indices,
-                     const Alembic::Abc::ISampleSelector &iss)
+                     const Alembic::AbcGeom::UInt32ArraySamplePtr &indices)
 {
 	MPoly *mpolys = config.mpoly;
 	MLoopUV *mloopuvs = static_cast<MLoopUV *>(data);
@@ -299,10 +297,6 @@ static void read_custom_data_ex(const ICompoundProperty &prop,
                                 const Alembic::Abc::ISampleSelector &iss,
                                 int data_type)
 {
-	void *cd_data = config.add_customdata_cb(config.user_data,
-	                                         prop_header.getName().c_str(),
-	                                         data_type);
-
 	if (data_type == CD_MLOOPCOL) {
 		C3fArraySamplePtr c3f_ptr = C3fArraySamplePtr();
 		C4fArraySamplePtr c4f_ptr = C4fArraySamplePtr();
@@ -322,14 +316,26 @@ static void read_custom_data_ex(const ICompoundProperty &prop,
 			c4f_ptr = sample.getVals();
 		}
 
-		read_mcols(config, cd_data, c3f_ptr, c4f_ptr, iss);
+		void *cd_data = config.add_customdata_cb(config.user_data,
+		                                         prop_header.getName().c_str(),
+		                                         data_type);
+
+		read_mcols(config, cd_data, c3f_ptr, c4f_ptr);
 	}
 	else if (data_type == CD_MLOOPUV) {
 		IV2fGeomParam uv_param(prop, prop_header.getName());
 		IV2fGeomParam::Sample sample;
 		uv_param.getIndexed(sample, iss);
 
-		read_uvs(config, cd_data, sample.getVals(), sample.getIndices(), iss);
+		if (uv_param.getScope() != kFacevaryingScope) {
+			return;
+		}
+
+		void *cd_data = config.add_customdata_cb(config.user_data,
+		                                         prop_header.getName().c_str(),
+		                                         data_type);
+
+		read_uvs(config, cd_data, sample.getVals(), sample.getIndices());
 	}
 }




More information about the Bf-blender-cvs mailing list