mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-03 17:56:21 +03:00
0030203: ProjLib_ComputeApproxOnPolarSurface::BuildInitialCurve2d array out of bound
Bug fixing: avoiding calculation if tPp == NbOfPnts
This commit is contained in:
parent
d8406b2f3a
commit
e5826d916c
@ -1180,32 +1180,30 @@ Handle(Adaptor2d_HCurve2d)
|
||||
}
|
||||
}
|
||||
|
||||
if( tPp != 0 ) {
|
||||
if (tPp != 0 && tPp != NbOfPnts) {
|
||||
gp_Pnt2d aPp = gp_Pnt2d(u,v);
|
||||
gp_Pnt2d aPn;
|
||||
j = 1;
|
||||
Standard_Boolean isFound = Standard_False;
|
||||
while( !isFound ) {
|
||||
Curve->D0( Param.Value(tPp+j), pntproj );
|
||||
for (j = tPp + 1; j <= NbOfPnts; ++j)
|
||||
{
|
||||
Curve->D0( Param.Value(j), pntproj );
|
||||
Extrema_ExtPS aTPS( pntproj, Surf->Surface(), TolU, TolV );
|
||||
Dist2Min = 1.e+200;
|
||||
Standard_Integer indExt = 0;
|
||||
Dist2Min = RealLast();
|
||||
if( aTPS.IsDone() && aTPS.NbExt() >= 1 ) {
|
||||
for( i = 1 ; i <= aTPS.NbExt() ; i++ ) {
|
||||
if( aTPS.SquareDistance(i) < DistTol3d2 && aTPS.SquareDistance(i) < Dist2Min ) {
|
||||
Dist2Min = aTPS.SquareDistance(i);
|
||||
indExt = i;
|
||||
isFound = Standard_True;
|
||||
}
|
||||
}
|
||||
Standard_Integer indExt = 0;
|
||||
for (i = 1; i <= aTPS.NbExt(); i++) {
|
||||
if (aTPS.SquareDistance(i) < DistTol3d2 && aTPS.SquareDistance(i) < Dist2Min) {
|
||||
Dist2Min = aTPS.SquareDistance(i);
|
||||
indExt = i;
|
||||
}
|
||||
}
|
||||
if (indExt > 0) {
|
||||
aTPS.Point(indExt).Parameter(u,v);
|
||||
aPn = gp_Pnt2d(u,v);
|
||||
isFound = Standard_True;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if( isFound ) {
|
||||
aTPS.Point(indExt).Parameter(u,v);
|
||||
aPn = gp_Pnt2d(u,v);
|
||||
break;
|
||||
}
|
||||
j++;
|
||||
if( (tPp+j) > NbOfPnts ) break;
|
||||
}
|
||||
|
||||
if( isFound ) {
|
||||
|
14
tests/bugs/modalg_7/bug30203
Normal file
14
tests/bugs/modalg_7/bug30203
Normal file
@ -0,0 +1,14 @@
|
||||
puts "========"
|
||||
puts "0030203: ProjLib_ComputeApproxOnPolarSurface::BuildInitialCurve2d array out of bound"
|
||||
puts "========"
|
||||
puts ""
|
||||
|
||||
restore [locate_data_file bug30203_curv.draw] c
|
||||
restore [locate_data_file bug30203_surf.draw] s
|
||||
|
||||
catch {project cc c s}
|
||||
if { [isdraw cc]} {
|
||||
checklength cc -l 1.
|
||||
} else {
|
||||
puts "Error: projection fails"
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user