1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-07 18:30:55 +03:00

0023946: Uninitialized variable aNewEdge3 used

Code for creation of extra edges in BRepMesh (special case) corrected
This commit is contained in:
abv 2013-05-07 12:04:21 +04:00
parent c15398ab70
commit f404c5c215

View File

@ -349,26 +349,24 @@ void BRepMesh_Delaun::CreateTriangles ( const Standard_Integer theVertexIndex,
else else
isSensOK = ( aDist12 < 0. && aDist23 < 0.); isSensOK = ( aDist12 < 0. && aDist23 < 0.);
Standard_Integer aNewEdge1, aNewEdge3, aNewTriangle;
if ( isSensOK ) if ( isSensOK )
{ {
aNewEdge1 = myMeshData->AddLink( BRepMesh_Edge aNewEdge1 (theVertexIndex, aFirstNode, BRepMesh_Free);
BRepMesh_Edge( theVertexIndex, aFirstNode, BRepMesh_Free ) ); BRepMesh_Edge aNewEdge3 (aLastNode, theVertexIndex, BRepMesh_Free);
aNewEdge3 = myMeshData->AddLink( Standard_Integer iNewEdge1 = myMeshData->AddLink (aNewEdge1);
BRepMesh_Edge( aLastNode, theVertexIndex, BRepMesh_Free ) ); Standard_Integer iNewEdge3 = myMeshData->AddLink (aNewEdge3);
aNewTriangle = myMeshData->AddElement( BRepMesh_Triangle aNewTri (Abs (iNewEdge1), anEdges.Key(), Abs (iNewEdge3),
BRepMesh_Triangle( Abs( aNewEdge1 ), anEdges.Key(), Abs( aNewEdge3 ), (iNewEdge1 > 0), isPositive, (iNewEdge3 > 0),
( aNewEdge1 > 0 ), isPositive, ( aNewEdge3 > 0 ), BRepMesh_Free);
BRepMesh_Free) ); Standard_Integer iNewTri = myMeshData->AddElement(aNewTri);
Standard_Boolean isCircleCreated = Standard_Boolean isCircleCreated =
myCircles.Add( aVertexCoord, aFirstVertex.Coord(), aLastVertex.Coord(), myCircles.Add (aVertexCoord, aFirstVertex.Coord(), aLastVertex.Coord(), iNewTri);
aNewTriangle );
if ( !isCircleCreated ) if ( !isCircleCreated )
myMeshData->RemoveElement( aNewTriangle ); myMeshData->RemoveElement (iNewTri);
} }
else else
{ {
@ -379,17 +377,15 @@ void BRepMesh_Delaun::CreateTriangles ( const Standard_Integer theVertexIndex,
if ( aVEdge1.SquareModulus() > aVEdge3.SquareModulus() ) if ( aVEdge1.SquareModulus() > aVEdge3.SquareModulus() )
{ {
aNewEdge1 = myMeshData->AddLink( BRepMesh_Edge aNewEdge (theVertexIndex, aFirstNode, BRepMesh_Free);
BRepMesh_Edge( theVertexIndex, aFirstNode, BRepMesh_Free ) ); Standard_Integer iNewEdge = myMeshData->AddLink(aNewEdge);
anExternalEdges.Append (Abs (iNewEdge));
anExternalEdges.Append( Abs( aNewEdge1) );
} }
else else
{ {
aNewEdge1 = myMeshData->AddLink( BRepMesh_Edge aNewEdge (aLastNode, theVertexIndex, BRepMesh_Free);
BRepMesh_Edge( aLastNode, theVertexIndex, BRepMesh_Free ) ); Standard_Integer iNewEdge = myMeshData->AddLink (aNewEdge);
anExternalEdges.Append (Abs (iNewEdge));
anExternalEdges.Append( Abs( aNewEdge3 ) );
} }
} }
} }
@ -537,7 +533,7 @@ void BRepMesh_Delaun::CleanupMesh()
BRepMesh_MapOfIntegerInteger aLoopEdges( 10, myMeshData->Allocator() ); BRepMesh_MapOfIntegerInteger aLoopEdges( 10, myMeshData->Allocator() );
ListOfInteger aTrianglesList; ListOfInteger aTrianglesList;
while ( Standard_True ) for(;;)
{ {
aTrianglesList.Clear(); aTrianglesList.Clear();
aLoopEdges.Clear(); aLoopEdges.Clear();