0030380: Exception while reading Step-file
authornbv <nbv@opencascade.com>
Tue, 20 Nov 2018 13:34:27 +0000 (16:34 +0300)
committerapn <apn@opencascade.com>
Fri, 23 Nov 2018 09:17:38 +0000 (12:17 +0300)
Incorrect initialization of array (when upper bound is less than lower bound) has been avoided in some places.

24 files changed:
src/RWStepFEA/RWStepFEA_RWCurve3dElementRepresentation.cxx
src/RWStepFEA/RWStepFEA_RWDummyNode.cxx
src/RWStepFEA/RWStepFEA_RWElementRepresentation.cxx
src/RWStepFEA/RWStepFEA_RWFeaModel.cxx
src/RWStepFEA/RWStepFEA_RWFeaModel3d.cxx
src/RWStepFEA/RWStepFEA_RWGeometricNode.cxx
src/RWStepFEA/RWStepFEA_RWNode.cxx
src/RWStepFEA/RWStepFEA_RWNodeRepresentation.cxx
src/RWStepFEA/RWStepFEA_RWNodeWithSolutionCoordinateSystem.cxx
src/RWStepFEA/RWStepFEA_RWNodeWithVector.cxx
src/RWStepFEA/RWStepFEA_RWSurface3dElementRepresentation.cxx
src/RWStepFEA/RWStepFEA_RWVolume3dElementRepresentation.cxx
src/RWStepShape/RWStepShape_RWCompoundShapeRepresentation.cxx
src/RWStepShape/RWStepShape_RWConnectedFaceShapeRepresentation.cxx
src/RWStepShape/RWStepShape_RWEdgeBasedWireframeShapeRepresentation.cxx
src/RWStepShape/RWStepShape_RWNonManifoldSurfaceShapeRepresentation.cxx
src/RWStepShape/RWStepShape_RWPointRepresentation.cxx
src/RWStepShape/RWStepShape_RWShapeDimensionRepresentation.cxx
src/RWStepShape/RWStepShape_RWShapeRepresentationWithParameters.cxx
src/RWStepVisual/RWStepVisual_RWDraughtingModel.cxx
src/STEPConstruct/STEPConstruct_Styles.cxx
src/StepData/StepData_StepReaderData.cxx
src/StepVisual/StepVisual_PresentationLayerAssignment.cxx
tests/bugs/step/bug30380 [new file with mode: 0644]

index 14a9607..59d124e 100644 (file)
@@ -127,7 +127,7 @@ void RWStepFEA_RWCurve3dElementRepresentation::WriteStep (StepData_StepWriter& S
   SW.Send (ent->StepRepr_Representation::Name());
 
   SW.OpenSub();
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     SW.Send (Var0);
   }
@@ -166,7 +166,7 @@ void RWStepFEA_RWCurve3dElementRepresentation::Share (const Handle(StepFEA_Curve
 
   // Inherited fields of Representation
 
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     iter.AddItem (Var0);
   }
index c4b86c4..4a3cedf 100644 (file)
@@ -94,7 +94,7 @@ void RWStepFEA_RWDummyNode::WriteStep (StepData_StepWriter& SW,
   SW.Send (ent->StepRepr_Representation::Name());
 
   SW.OpenSub();
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     SW.Send (Var0);
   }
@@ -118,7 +118,7 @@ void RWStepFEA_RWDummyNode::Share (const Handle(StepFEA_DummyNode) &ent,
 
   // Inherited fields of Representation
 
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     iter.AddItem (Var0);
   }
index 50736dc..b26d60d 100644 (file)
@@ -105,7 +105,7 @@ void RWStepFEA_RWElementRepresentation::WriteStep (StepData_StepWriter& SW,
   SW.Send (ent->StepRepr_Representation::Name());
 
   SW.OpenSub();
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     SW.Send (Var0);
   }
@@ -134,7 +134,7 @@ void RWStepFEA_RWElementRepresentation::Share (const Handle(StepFEA_ElementRepre
 
   // Inherited fields of Representation
 
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     iter.AddItem (Var0);
   }
index 366311e..aa6be8f 100644 (file)
@@ -117,7 +117,7 @@ void RWStepFEA_RWFeaModel::WriteStep (StepData_StepWriter& SW,
   SW.Send (ent->StepRepr_Representation::Name());
 
   SW.OpenSub();
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     SW.Send (Var0);
   }
@@ -153,7 +153,7 @@ void RWStepFEA_RWFeaModel::Share (const Handle(StepFEA_FeaModel) &ent,
 
   // Inherited fields of Representation
 
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     iter.AddItem (Var0);
   }
index 87afc5e..a8320ea 100644 (file)
@@ -117,7 +117,7 @@ void RWStepFEA_RWFeaModel3d::WriteStep (StepData_StepWriter& SW,
   SW.Send (ent->StepRepr_Representation::Name());
 
   SW.OpenSub();
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     SW.Send (Var0);
   }
@@ -153,7 +153,7 @@ void RWStepFEA_RWFeaModel3d::Share (const Handle(StepFEA_FeaModel3d) &ent,
 
   // Inherited fields of Representation
 
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     iter.AddItem (Var0);
   }
index 8a3a59b..9c9af39 100644 (file)
@@ -94,7 +94,7 @@ void RWStepFEA_RWGeometricNode::WriteStep (StepData_StepWriter& SW,
   SW.Send (ent->StepRepr_Representation::Name());
 
   SW.OpenSub();
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     SW.Send (Var0);
   }
@@ -118,7 +118,7 @@ void RWStepFEA_RWGeometricNode::Share (const Handle(StepFEA_GeometricNode) &ent,
 
   // Inherited fields of Representation
 
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     iter.AddItem (Var0);
   }
index 9cd0602..0082e89 100644 (file)
@@ -94,7 +94,7 @@ void RWStepFEA_RWNode::WriteStep (StepData_StepWriter& SW,
   SW.Send (ent->StepRepr_Representation::Name());
 
   SW.OpenSub();
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     SW.Send (Var0);
   }
@@ -118,7 +118,7 @@ void RWStepFEA_RWNode::Share (const Handle(StepFEA_Node) &ent,
 
   // Inherited fields of Representation
 
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     iter.AddItem (Var0);
   }
index a3d7694..36ed764 100644 (file)
@@ -94,7 +94,7 @@ void RWStepFEA_RWNodeRepresentation::WriteStep (StepData_StepWriter& SW,
   SW.Send (ent->StepRepr_Representation::Name());
 
   SW.OpenSub();
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     SW.Send (Var0);
   }
@@ -118,7 +118,7 @@ void RWStepFEA_RWNodeRepresentation::Share (const Handle(StepFEA_NodeRepresentat
 
   // Inherited fields of Representation
 
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     iter.AddItem (Var0);
   }
index 12d8068..ae2e6b0 100644 (file)
@@ -94,7 +94,7 @@ void RWStepFEA_RWNodeWithSolutionCoordinateSystem::WriteStep (StepData_StepWrite
   SW.Send (ent->StepRepr_Representation::Name());
 
   SW.OpenSub();
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     SW.Send (Var0);
   }
@@ -118,7 +118,7 @@ void RWStepFEA_RWNodeWithSolutionCoordinateSystem::Share (const Handle(StepFEA_N
 
   // Inherited fields of Representation
 
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     iter.AddItem (Var0);
   }
index 9469c85..54aee7e 100644 (file)
@@ -94,7 +94,7 @@ void RWStepFEA_RWNodeWithVector::WriteStep (StepData_StepWriter& SW,
   SW.Send (ent->StepRepr_Representation::Name());
 
   SW.OpenSub();
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     SW.Send (Var0);
   }
@@ -118,7 +118,7 @@ void RWStepFEA_RWNodeWithVector::Share (const Handle(StepFEA_NodeWithVector) &en
 
   // Inherited fields of Representation
 
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     iter.AddItem (Var0);
   }
index c525aed..d7606fa 100644 (file)
@@ -127,7 +127,7 @@ void RWStepFEA_RWSurface3dElementRepresentation::WriteStep (StepData_StepWriter&
   SW.Send (ent->StepRepr_Representation::Name());
 
   SW.OpenSub();
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     SW.Send (Var0);
   }
@@ -166,7 +166,7 @@ void RWStepFEA_RWSurface3dElementRepresentation::Share (const Handle(StepFEA_Sur
 
   // Inherited fields of Representation
 
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     iter.AddItem (Var0);
   }
index 8415445..5337539 100644 (file)
@@ -122,7 +122,7 @@ void RWStepFEA_RWVolume3dElementRepresentation::WriteStep (StepData_StepWriter&
   SW.Send (ent->StepRepr_Representation::Name());
 
   SW.OpenSub();
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     SW.Send (Var0);
   }
@@ -159,7 +159,7 @@ void RWStepFEA_RWVolume3dElementRepresentation::Share (const Handle(StepFEA_Volu
 
   // Inherited fields of Representation
 
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     iter.AddItem (Var0);
   }
index 3dbc356..80d52c6 100644 (file)
@@ -87,7 +87,7 @@ void RWStepShape_RWCompoundShapeRepresentation::WriteStep (StepData_StepWriter&
   SW.Send (ent->StepRepr_Representation::Name());
 
   SW.OpenSub();
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     SW.Send (Var0);
   }
@@ -107,7 +107,7 @@ void RWStepShape_RWCompoundShapeRepresentation::Share (const Handle(StepShape_Co
 
   // Inherited fields of Representation
 
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     iter.AddItem (Var0);
   }
index 9ad0c3c..fabfd8f 100644 (file)
@@ -87,7 +87,7 @@ void RWStepShape_RWConnectedFaceShapeRepresentation::WriteStep (StepData_StepWri
   SW.Send (ent->StepRepr_Representation::Name());
 
   SW.OpenSub();
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     SW.Send (Var0);
   }
@@ -107,7 +107,7 @@ void RWStepShape_RWConnectedFaceShapeRepresentation::Share (const Handle(StepSha
 
   // Inherited fields of Representation
 
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     iter.AddItem (Var0);
   }
index 72dbad2..08c0e61 100644 (file)
@@ -87,7 +87,7 @@ void RWStepShape_RWEdgeBasedWireframeShapeRepresentation::WriteStep (StepData_St
   SW.Send (ent->StepRepr_Representation::Name());
 
   SW.OpenSub();
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     SW.Send (Var0);
   }
@@ -107,7 +107,7 @@ void RWStepShape_RWEdgeBasedWireframeShapeRepresentation::Share (const Handle(St
 
   // Inherited fields of Representation
 
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     iter.AddItem (Var0);
   }
index 27b4ff6..6c6d9ba 100644 (file)
@@ -87,7 +87,7 @@ void RWStepShape_RWNonManifoldSurfaceShapeRepresentation::WriteStep (StepData_St
   SW.Send (ent->StepRepr_Representation::Name());
 
   SW.OpenSub();
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     SW.Send (Var0);
   }
@@ -107,7 +107,7 @@ void RWStepShape_RWNonManifoldSurfaceShapeRepresentation::Share (const Handle(St
 
   // Inherited fields of Representation
 
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     iter.AddItem (Var0);
   }
index 5243d03..a911af0 100644 (file)
@@ -87,7 +87,7 @@ void RWStepShape_RWPointRepresentation::WriteStep (StepData_StepWriter& SW,
   SW.Send (ent->StepRepr_Representation::Name());
 
   SW.OpenSub();
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     SW.Send (Var0);
   }
@@ -107,7 +107,7 @@ void RWStepShape_RWPointRepresentation::Share (const Handle(StepShape_PointRepre
 
   // Inherited fields of Representation
 
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     iter.AddItem (Var0);
   }
index 384cf03..7655699 100644 (file)
@@ -107,7 +107,7 @@ void RWStepShape_RWShapeDimensionRepresentation::WriteStep (StepData_StepWriter&
 
   SW.OpenSub();
   if (ent->ItemsAP242().IsNull()) {
-    for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+    for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
       Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
       SW.Send (Var0);
     }
@@ -135,7 +135,7 @@ void RWStepShape_RWShapeDimensionRepresentation::Share (const Handle(StepShape_S
   // Inherited fields of Representation
 
   if (ent->ItemsAP242().IsNull()) {
-    for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+    for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
       Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
       iter.AddItem (Var0);
     }
index 9e07e93..9155941 100644 (file)
@@ -87,7 +87,7 @@ void RWStepShape_RWShapeRepresentationWithParameters::WriteStep (StepData_StepWr
   SW.Send (ent->StepRepr_Representation::Name());
 
   SW.OpenSub();
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     SW.Send (Var0);
   }
@@ -107,7 +107,7 @@ void RWStepShape_RWShapeRepresentationWithParameters::Share (const Handle(StepSh
 
   // Inherited fields of Representation
 
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     iter.AddItem (Var0);
   }
index 5a941ec..1316131 100644 (file)
@@ -87,7 +87,7 @@ void RWStepVisual_RWDraughtingModel::WriteStep (StepData_StepWriter& SW,
   SW.Send (ent->StepRepr_Representation::Name());
 
   SW.OpenSub();
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     SW.Send (Var0);
   }
@@ -107,7 +107,7 @@ void RWStepVisual_RWDraughtingModel::Share (const Handle(StepVisual_DraughtingMo
 
   // Inherited fields of Representation
 
-  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::Items()->Length(); i1++ ) {
+  for (Standard_Integer i1=1; i1 <= ent->StepRepr_Representation::NbItems(); i1++ ) {
     Handle(StepRepr_RepresentationItem) Var0 = ent->StepRepr_Representation::Items()->Value(i1);
     iter.AddItem (Var0);
   }
index dece07f..a4cb702 100644 (file)
@@ -558,7 +558,7 @@ Standard_Boolean STEPConstruct_Styles::GetColors (const Handle(StepVisual_Styled
   // parse on styles
   for(Standard_Integer j=1; j<=style->NbStyles(); j++ ) {
     Handle(StepVisual_PresentationStyleAssignment) PSA = style->StylesValue ( j );
-    if(PSA.IsNull()) continue;
+    if(PSA.IsNull() || PSA->Styles().IsNull()) continue;
     IsComponent = Standard_True;
     
     for(Standard_Integer k=1; k<=PSA->NbStyles(); k++ ) {
index 9a5aa5d..db53128 100644 (file)
@@ -456,7 +456,10 @@ Standard_Boolean StepData_StepReaderData::ReadSubList(const Standard_Integer num
   const Standard_Integer /* lenmax */) const
 {
   numsub = SubListNumber(num, nump, Standard_False);
-  if (numsub > 0) return Standard_True;
+  if (numsub > 0)
+  {
+    return (NbParams(numsub) > 0);
+  }
   //  Si optionel indefini, on passe l eponge
   numsub = 0;
   Standard_Boolean isvoid = (Param(num, nump).ParamType() == Interface_ParamVoid);
index c48d676..4b7a737 100644 (file)
@@ -70,5 +70,5 @@ StepVisual_LayeredItem StepVisual_PresentationLayerAssignment::AssignedItemsValu
 
 Standard_Integer StepVisual_PresentationLayerAssignment::NbAssignedItems () const
 {
-       return assignedItems->Length();
+       return assignedItems.IsNull()? 0 : assignedItems->Length();
 }
diff --git a/tests/bugs/step/bug30380 b/tests/bugs/step/bug30380
new file mode 100644 (file)
index 0000000..923f136
--- /dev/null
@@ -0,0 +1,13 @@
+puts "=========="
+puts "0030380: Ex-ception while reading Step-file"
+puts "=========="
+puts ""
+
+ReadStep D_First [locate_data_file bug29633_nist_ctc_05_asme1_ap242-1.stp]
+XGetOneShape result D_First 
+
+checkshape result
+
+checknbshapes result -solid 1 -shell 1 -face 156 -wire 201
+
+checkview -display result -2d -path ${imagedir}/${test_image}.png