From 10a3e1da81012e454812ea55797e4de63334249c Mon Sep 17 00:00:00 2001 From: Luke San Antonio Date: Wed, 15 Jun 2016 00:05:01 -0400 Subject: [PATCH] Only use valid (triangle) primitive sets ParsePrimitive returns false immediately on error but the return value wasn't being checked in ParseMesh so invalid / uninitialized primitives were being added to the mesh. --- tiny_gltf_loader.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tiny_gltf_loader.h b/tiny_gltf_loader.h index 12f89d4..3d3e141 100644 --- a/tiny_gltf_loader.h +++ b/tiny_gltf_loader.h @@ -1343,8 +1343,10 @@ static bool ParseMesh(Mesh *mesh, std::string *err, const picojson::object &o) { (primObject->second).get(); for (size_t i = 0; i < primArray.size(); i++) { Primitive primitive; - ParsePrimitive(&primitive, err, primArray[i].get()); - mesh->primitives.push_back(primitive); + if(ParsePrimitive(&primitive, err, primArray[i].get())){ + // Only add the primitive if the parsing succeeds. + mesh->primitives.push_back(primitive); + } } }