2
0
Эх сурвалжийг харах

Merge branch 'master' into fix_clang_warnings

Kim Kulling 5 жил өмнө
parent
commit
ad286a8ab1

+ 0 - 1
code/Common/SceneCombiner.cpp

@@ -1312,7 +1312,6 @@ void SceneCombiner::Copy(aiMetadata** _dest, const aiMetadata* src) {
     aiMetadata* dest = *_dest = aiMetadata::Alloc( src->mNumProperties );
     std::copy(src->mKeys, src->mKeys + src->mNumProperties, dest->mKeys);
 
-    dest->mValues = new aiMetadataEntry[src->mNumProperties];
     for (unsigned int i = 0; i < src->mNumProperties; ++i) {
         aiMetadataEntry& in = src->mValues[i];
         aiMetadataEntry& out = dest->mValues[i];

+ 32 - 6
code/FBX/FBXMeshGeometry.cpp

@@ -448,6 +448,12 @@ void ResolveVertexDataArray(std::vector<T>& data_out, const Scope& source,
         std::vector<T> tempData;
 		ParseVectorDataArray(tempData, GetRequiredElement(source, dataElementName));
 
+		if (tempData.size() != vertex_count) {
+			FBXImporter::LogError(Formatter::format("length of input data unexpected for ByVertice mapping: ")
+								  << tempData.size() << ", expected " << vertex_count);
+			return;
+		}
+
         data_out.resize(vertex_count);
 		for (size_t i = 0, e = tempData.size(); i < e; ++i) {
 
@@ -461,10 +467,23 @@ void ResolveVertexDataArray(std::vector<T>& data_out, const Scope& source,
 		std::vector<T> tempData;
 		ParseVectorDataArray(tempData, GetRequiredElement(source, dataElementName));
 
-        data_out.resize(vertex_count);
+		if (tempData.size() != vertex_count) {
+			FBXImporter::LogError(Formatter::format("length of input data unexpected for ByVertice mapping: ")
+								  << tempData.size() << ", expected " << vertex_count);
+			return;
+		}
 
         std::vector<int> uvIndices;
         ParseVectorDataArray(uvIndices,GetRequiredElement(source,indexDataElementName));
+
+		if (uvIndices.size() != vertex_count) {
+			FBXImporter::LogError(Formatter::format("length of input data unexpected for ByVertice mapping: ")
+								  << uvIndices.size() << ", expected " << vertex_count);
+			return;
+		}
+
+		data_out.resize(vertex_count);
+
         for (size_t i = 0, e = uvIndices.size(); i < e; ++i) {
 
             const unsigned int istart = mapping_offsets[i], iend = istart + mapping_counts[i];
@@ -493,15 +512,22 @@ void ResolveVertexDataArray(std::vector<T>& data_out, const Scope& source,
 		std::vector<T> tempData;
 		ParseVectorDataArray(tempData, GetRequiredElement(source, dataElementName));
 
-        data_out.resize(vertex_count);
+		if (tempData.size() != vertex_count) {
+			FBXImporter::LogError(Formatter::format("length of input data unexpected for ByPolygonVertex mapping: ")
+								  << tempData.size() << ", expected " << vertex_count);
+			return;
+		}
 
         std::vector<int> uvIndices;
         ParseVectorDataArray(uvIndices,GetRequiredElement(source,indexDataElementName));
 
-        if (uvIndices.size() != vertex_count) {
-            FBXImporter::LogError("length of input data unexpected for ByPolygonVertex mapping");
-            return;
-        }
+		if (uvIndices.size() != vertex_count) {
+			FBXImporter::LogError(Formatter::format("length of input data unexpected for ByPolygonVertex mapping: ")
+								  << uvIndices.size() << ", expected " << vertex_count);
+			return;
+		}
+
+		data_out.resize(vertex_count);
 
         const T empty;
         unsigned int next = 0;