Skip to content
Snippets Groups Projects
Commit d49e1793 authored by Thomas De Maet's avatar Thomas De Maet
Browse files

isinside: security for dims > dimElmt

parent ec2ca7b7
No related branches found
No related tags found
No related merge requests found
......@@ -132,8 +132,7 @@ std::vector<MElement *> MElementOctree::findAll(double x, double y, double z, in
std::vector<void*> v;
std::vector<MElement*> e;
Octree_SearchAll(P, _octree,&v);
for (std::vector<void*>::iterator it = v.begin();
it != v.end(); ++it){
for (std::vector<void*>::iterator it = v.begin(); it != v.end(); ++it) {
MElement *el = (MElement*) *it;
if (dim == -1 || el->getDim() == dim)e.push_back(el);
}
......@@ -146,14 +145,14 @@ std::vector<MElement *> MElementOctree::findAll(double x, double y, double z, in
std::vector<GEntity*> entities;
_gm->getEntities(entities);
for(unsigned int i = 0; i < entities.size(); i++){
for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++){
MElement* el = entities[i]->getMeshElement(j);
if (dim == -1 || el->getDim() == dim){
if (MElementInEle(el, P)){
for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++){
MElement* el = entities[i]->getMeshElement(j);
if (dim == -1 || el->getDim() == dim){
if (MElementInEle(el, P)){
e.push_back(el);
}
}
}
}
}
}
}
if(!e.empty()) {
MElement::setTolerance(initialTol);
......@@ -212,15 +211,15 @@ MElement *MElementOctree::find(double x, double y, double z, int dim, bool stric
std::vector<GEntity*> entities;
_gm->getEntities(entities);
for(unsigned int i = 0; i < entities.size(); i++){
for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++){
e = entities[i]->getMeshElement(j);
if (dim == -1 || e->getDim() == dim){
if (MElementInEle(e, P)){
MElement::setTolerance(initialTol);
return e;
}
}
}
for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++){
e = entities[i]->getMeshElement(j);
if (dim == -1 || e->getDim() == dim){
if (MElementInEle(e, P)) {
MElement::setTolerance(initialTol);
return e;
}
}
}
}
}
MElement::setTolerance(initialTol);
......@@ -233,14 +232,14 @@ MElement *MElementOctree::find(double x, double y, double z, int dim, bool stric
tol *= 10.0;
MElement::setTolerance(tol);
for(unsigned int i = 0; i < _elems.size(); i++){
e = _elems[i];
if (dim == -1 || e->getDim() == dim){
if (MElementInEle(e, P)){
MElement::setTolerance(initialTol);
return e;
}
}
}
e = _elems[i];
if (dim == -1 || e->getDim() == dim){
if (MElementInEle(e, P)){
MElement::setTolerance(initialTol);
return e;
}
}
}
}
MElement::setTolerance(initialTol);
//Msg::Warning("Point %g %g %g not found",x,y,z);
......
......@@ -76,7 +76,7 @@ class MLine : public MElement {
virtual bool isInside(double u, double v, double w)
{
double tol = _isInsideTolerance;
if(u < -(1. + tol) || u > (1. + tol))
if(u < -(1. + tol) || u > (1. + tol) || fabs(v) > tol || fabs(w) > tol)
return false;
return true;
}
......
......@@ -140,7 +140,7 @@ class MQuadrangle : public MElement {
virtual bool isInside(double u, double v, double w)
{
double tol = _isInsideTolerance;
if(u < -(1. + tol) || v < -(1. + tol) || u > (1. + tol) || v > (1. + tol))
if(u < -(1. + tol) || v < -(1. + tol) || u > (1. + tol) || v > (1. + tol) || fabs(w) > tol)
return false;
return true;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment