From 7c54b1b688b184c2fd4a7e5a0622818c8874fc2c Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 1 Mar 2007 13:41:28 +0000 Subject: [PATCH] Changed the index value to 0 of the token vector, wheras original the 1 was used, the later causing a crash when only one token was available. Also clean up #if #else #endif block to help make the code more readable and maintainable. This bug and fix was found by Anders Backman, but final implementation done by Robert Osfield. --- src/osgPlugins/directx/mesh.cpp | 27 +++++---------------------- 1 file changed, 5 insertions(+), 22 deletions(-) diff --git a/src/osgPlugins/directx/mesh.cpp b/src/osgPlugins/directx/mesh.cpp index 2e2c9f06b..f70cb8143 100644 --- a/src/osgPlugins/directx/mesh.cpp +++ b/src/osgPlugins/directx/mesh.cpp @@ -240,32 +240,15 @@ void Mesh::parseMeshMaterialList(ifstream& fin) if (token.size() == 0) continue; - // dgm - check for "{ }" for a + // check for "{ }" for a // material which was declared globally -#if 1 - Material * material = _obj->findMaterial(token[1]); - if (material) { + Material * material = _obj->findMaterial(token[0]); + if (material) + { _materialList->material.push_back(*material); continue; } -#else - bool found = false; - if (token.size() > 2) { - std::vector::iterator itr; - for (itr = _globalMaterials.begin(); itr != _globalMaterials.end(); ++itr) { - if ( (*itr).name == token[1]) { - if (!_materialList) - _materialList = new MeshMaterialList; - _materialList->material.push_back(*itr); - found = true; - break; - } - } - } - if (found) - continue; -#endif - + if (strrchr(buf, '}') != 0) break; else if (strrchr(buf, '{') != 0) {