diff --git a/src/OpenMesh/Core/IO/reader/OBJReader.cc b/src/OpenMesh/Core/IO/reader/OBJReader.cc index fa624061..c6139222 100644 --- a/src/OpenMesh/Core/IO/reader/OBJReader.cc +++ b/src/OpenMesh/Core/IO/reader/OBJReader.cc @@ -106,25 +106,15 @@ void trimString( std::string& _string) { } //----------------------------------------------------------------------------- -template -class HasSeen : public std::unary_function -{ -public: - HasSeen () : seen_ () { } - - bool operator ()(const Handle& i) const - { - return (!seen_.insert(i.idx()).second); - } - -private: - mutable std::set seen_; -}; // remove duplicated indices from one face void remove_duplicated_vertices(BaseImporter::VHandles& _indices) { - _indices.erase(std::remove_if(_indices.begin(),_indices.end(),HasSeen()),_indices.end()); + BaseImporter::VHandles::iterator endIter = _indices.end(); + for (BaseImporter::VHandles::iterator iter = _indices.begin(); iter != endIter; ++iter) + endIter = std::remove(iter+1, endIter, *(iter)); + + _indices.erase(endIter,_indices.end()); } //----------------------------------------------------------------------------- diff --git a/src/Unittests/unittests_read_write_OBJ.cc b/src/Unittests/unittests_read_write_OBJ.cc index 938f259d..a71c07a8 100644 --- a/src/Unittests/unittests_read_write_OBJ.cc +++ b/src/Unittests/unittests_read_write_OBJ.cc @@ -54,9 +54,9 @@ TEST_F(OpenMeshReadWriteOBJ, LoadDegeneratedOBJ) { mesh_.clear(); - bool ok = OpenMesh::IO::read_mesh(mesh_, "cube-minimal.obj"); + bool ok = OpenMesh::IO::read_mesh(mesh_, "cube-minimal-degenerated.obj"); - EXPECT_TRUE(ok) << "Unable to load cube-minimal.obj"; + EXPECT_TRUE(ok) << "Unable to load cube-minimal-degenerated.obj"; EXPECT_EQ(8u , mesh_.n_vertices()) << "The number of loaded vertices is not correct!"; EXPECT_EQ(18u , mesh_.n_edges()) << "The number of loaded edges is not correct!";