Check in math_GlobOptMin::computeGlobalExtremum(...) method if the parameter went out of boundary(-ies).
Added test case bugs/modalg_6/bug26484
math_Vector aStepBestPoint(1, myN);
Standard_Boolean isInside = Standard_False;
Standard_Real r;
+ Standard_Boolean isReached = Standard_False;
-
- for(myX(j) = myA(j) + myE1; myX(j) < myB(j) + myE1; myX(j) += myV(j))
+ for(myX(j) = myA(j) + myE1;
+ (myX(j) < myB(j) + myE1) && (!isReached);
+ myX(j) += myV(j))
{
if (myX(j) > myB(j))
+ {
myX(j) = myB(j);
+ isReached = Standard_True;
+ }
if (j == 1)
{
--- /dev/null
+puts "=========="
+puts "OCC26484"
+puts "=========="
+puts ""
+###########################################
+# BRepExtrema_DistShapeShape hangs
+###########################################
+
+restore [locate_data_file bug26484_shape.brep] s1
+restore [locate_data_file bug26484_face.brep] s2
+distmini dd s1 s2
+dump dd_val
+
+distmini dd s2 s1
+regexp {([-0-9.+eE]+)$} [dump dd_val] full dist
+
+set expected_dist 13.2039203316305
+set tol_abs_dist 1.0e-07
+set tol_rel_dist 0.01
+checkreal "Dump of dd_val" ${dist} ${expected_dist} ${tol_abs_dist} ${tol_rel_dist}