Check for invalid HE handle

git-svn-id: http://www.openmesh.org/svnrepo/OpenMesh/trunk@718 fdac6126-5c0c-442c-9429-916003d36597
This commit is contained in:
Jan Möbius
2012-09-28 15:05:25 +00:00
parent e5ee41bca2
commit ecb76539f3

View File

@@ -141,6 +141,11 @@ size_t McDecimaterT<Mesh>::decimate(size_t _n_collapses) {
tmpHandle = typename Mesh::HalfedgeHandle( (double(rand()) / double(RAND_MAX) ) * double(mesh_.n_halfedges()-1) ); tmpHandle = typename Mesh::HalfedgeHandle( (double(rand()) / double(RAND_MAX) ) * double(mesh_.n_halfedges()-1) );
#endif #endif
// Only take valid Handles!
if ( tmpHandle.idx() >=mesh_.n_halfedges() ) {
continue;
}
// if it is not deleted, we analyse it // if it is not deleted, we analyse it
if ( ! mesh_.status(tmpHandle).deleted() ) { if ( ! mesh_.status(tmpHandle).deleted() ) {
@@ -263,6 +268,11 @@ size_t McDecimaterT<Mesh>::decimate_to_faces(size_t _nv, size_t _nf) {
tmpHandle = typename Mesh::HalfedgeHandle( ( double(rand()) / double(RAND_MAX) ) * double(mesh_.n_halfedges() - 1)); tmpHandle = typename Mesh::HalfedgeHandle( ( double(rand()) / double(RAND_MAX) ) * double(mesh_.n_halfedges() - 1));
#endif #endif
// Only take valid Handles!
if ( tmpHandle.idx() >=mesh_.n_halfedges() ) {
continue;
}
// if it is not deleted, we analyse it // if it is not deleted, we analyse it
if (!mesh_.status(tmpHandle).deleted()) { if (!mesh_.status(tmpHandle).deleted()) {
@@ -401,6 +411,11 @@ size_t McDecimaterT<Mesh>::decimate_constraints_only(float _factor) {
tmpHandle = typename Mesh::HalfedgeHandle(int(rand() * randomNormalizer ) ); tmpHandle = typename Mesh::HalfedgeHandle(int(rand() * randomNormalizer ) );
#endif #endif
// Only take valid Handles!
if ( tmpHandle.idx() >=mesh_.n_halfedges() ) {
continue;
}
// if it is not deleted, we analyze it // if it is not deleted, we analyze it
if (!mesh_.status(mesh_.edge_handle(tmpHandle)).deleted()) { if (!mesh_.status(mesh_.edge_handle(tmpHandle)).deleted()) {