0024759: Crash on STEP import, when reading a file exported in non-"C" locale
authordbv <dbv@opencascade.com>
Thu, 10 Apr 2014 16:13:01 +0000 (20:13 +0400)
committerapn <apn@opencascade.com>
Thu, 10 Apr 2014 16:14:10 +0000 (20:14 +0400)
Fix for step reading
Add test case bugs/xde/bug24759

src/RWStepGeom/RWStepGeom_RWCartesianPoint.cxx
tests/bugs/xde/bug24759 [new file with mode: 0644]

index d234696..429f67e 100644 (file)
@@ -52,8 +52,8 @@ void RWStepGeom_RWCartesianPoint::ReadStep
           if(nb2 > 3) {
             ach->AddWarning("More than 3 coordinates, ignored");
           }
-         nbcoord = nb2;
-         for (Standard_Integer i2 = 0; i2 < nb2; i2 ++) {
+         nbcoord = Min (nb2, 3);
+         for (Standard_Integer i2 = 0; i2 < nbcoord; i2 ++) {
            if (data->ReadReal (nsub2,i2+1,"coordinates",ach,aCoordinatesItem)) {
               XYZ[i2] = aCoordinatesItem;
             }
@@ -64,7 +64,7 @@ void RWStepGeom_RWCartesianPoint::ReadStep
 
 
 //     ent->Init(aName, aCoordinates);
-       if (nbcoord >= 3) ent->Init3D (aName, XYZ[0],XYZ[1],XYZ[2]);
+       if (nbcoord == 3) ent->Init3D (aName, XYZ[0],XYZ[1],XYZ[2]);
        else              ent->Init2D (aName, XYZ[0],XYZ[1]);
 }
 
diff --git a/tests/bugs/xde/bug24759 b/tests/bugs/xde/bug24759
new file mode 100644 (file)
index 0000000..b8be26c
--- /dev/null
@@ -0,0 +1,13 @@
+puts "================"
+puts "OCC24759"
+puts "================"
+puts ""
+##########################################################################
+# Crash on STEP import, when reading a file exported is non-"C" locale
+##########################################################################
+
+decho off
+stepread [locate_data_file bug24759_FissionMeter.step] aaa f * 
+
+
+