1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-24 13:50:49 +03:00

0024829: sprops with precision throws an exception

Reason of exception is reading nonexistent element of array.

Test case for issue CR24829

(cherry picked from commit 6a6946f24e906c3e8efc2b34ddeb9c771bb037d0)

Task GEOM-04-011: negative surface area issue Set-57.
This commit is contained in:
nbv
2014-05-08 11:53:41 +04:00
parent 5302d8da88
commit 630d1a7f28
2 changed files with 19 additions and 4 deletions

View File

@@ -221,9 +221,9 @@ static Standard_Integer LFillIntervalBounds(Standard_Real A,
const TColStd_Array1OfReal& Knots,
const Standard_Integer NumSubs)
{
Standard_Integer iEnd = Knots.Upper(), jEnd = L1->Upper();
Standard_Integer iEnd = MaxSubs(Knots.Upper()-1, NumSubs), jEnd = L1->Upper();
iEnd = Max(iEnd, Knots.Upper());
if(iEnd - 1 > jEnd){
iEnd = MaxSubs(iEnd-1,NumSubs);
L1 = new math_Vector(1,iEnd);
L2 = new math_Vector(1,iEnd);
DimL = new math_Vector(1,iEnd);
@@ -247,9 +247,9 @@ static Standard_Integer UFillIntervalBounds(Standard_Real A,
const TColStd_Array1OfReal& Knots,
const Standard_Integer NumSubs)
{
Standard_Integer iEnd = Knots.Upper(), jEnd = U1->Upper();
Standard_Integer iEnd = MaxSubs(Knots.Upper()-1, NumSubs), jEnd = U1->Upper();
iEnd = Max(iEnd, Knots.Upper());
if(iEnd - 1 > jEnd){
iEnd = MaxSubs(iEnd-1,NumSubs);
U1 = new math_Vector(1,iEnd);
U2 = new math_Vector(1,iEnd);
DimU = new math_Vector(1,iEnd);

View File

@@ -0,0 +1,15 @@
puts "========="
puts "OCC24829"
puts "========="
puts ""
###########################################################
# sprops with precision throws an exception
###########################################################
restore [locate_data_file bug24829_faceOutput-wrong.brep] result
sprops result 0.0001
set square 15.1187
set 3dviewer 1