0024675: Crash reading a VRML file
authorvro <vro@opencascade.com>
Thu, 6 Mar 2014 10:48:36 +0000 (14:48 +0400)
committerabv <abv@opencascade.com>
Thu, 6 Mar 2014 11:50:26 +0000 (15:50 +0400)
A node index for a normal is passed through a map of corrected references to node indices.

Test case for issue CR24675

src/VrmlData/VrmlData_IndexedFaceSet.cxx
tests/bugs/end
tests/bugs/grids.list
tests/bugs/moddata_3/bug23023 [deleted file]
tests/bugs/stlvrml/begin [new file with mode: 0755]
tests/bugs/stlvrml/bug22092 [new file with mode: 0755]
tests/bugs/stlvrml/bug23023 [new file with mode: 0644]
tests/bugs/stlvrml/bug23846 [new file with mode: 0755]
tests/bugs/stlvrml/bug24675 [new file with mode: 0644]
tests/bugs/xde/bug22092 [deleted file]
tests/bugs/xde/bug23846 [deleted file]

index ce2c5fa..ee7dfd7 100644 (file)
@@ -193,7 +193,7 @@ const Handle(TopoDS_TShape)& VrmlData_IndexedFaceSet::TShape ()
               if (IndiceNormals(i, arrIndice) == 3) {
                 for (Standard_Integer j = 0; j < 3; j++) {
                   const gp_XYZ& aNormal = myNormals->Normal (arrIndice[j]);
-                  Standard_Integer anInd = arrNodes[j] * 3 + 1;
+                  Standard_Integer anInd = (mapNodeId(arrNodes[j]) - 1) * 3 + 1;
                   Normals->SetValue (anInd + 0, Standard_ShortReal (aNormal.X()));
                   Normals->SetValue (anInd + 1, Standard_ShortReal (aNormal.Y()));
                   Normals->SetValue (anInd + 2, Standard_ShortReal (aNormal.Z()));
index 1431d0a..d225ba8 100755 (executable)
@@ -163,6 +163,10 @@ if { [isdraw result] } {
   if { [info exists 3dviewer] } {
     #for multiview support: dump result from all opened views
     set view_str [vviewlist long]
+    if { [llength ${view_str}] == 0 } {
+       vinit
+       set view_str [vviewlist long]
+    }
     set view_list [regexp -all -inline {\S+} $view_str]
     foreach {view_name} $view_list {
       vactivate $view_name
index 9a9f75f..47b92a1 100755 (executable)
@@ -15,3 +15,4 @@
 015 caf
 016 mesh
 017 heal
+018 stlvrml
diff --git a/tests/bugs/moddata_3/bug23023 b/tests/bugs/moddata_3/bug23023
deleted file mode 100644 (file)
index 480a2e4..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-puts "========================"
-puts "OCC23023"
-puts "========================"
-puts ""
-#######################################################################
-# VRML reader fails on attempt to read an attached WRL file
-#######################################################################
-
-set BugNumber OCC23023
-pload XDE
-
-set filepath [locate_data_file OCC23023-2056132060_2_tutnicht.wrl]
-if [catch { set list [loadvrml result $filepath] } res] {
-    puts "Faulty: VRML reader fails"
-} else {
-    puts "OK: VRML reader work properly"
-}
diff --git a/tests/bugs/stlvrml/begin b/tests/bugs/stlvrml/begin
new file mode 100755 (executable)
index 0000000..c45bfe9
--- /dev/null
@@ -0,0 +1,3 @@
+pload XSDRAW
+
+set subgroup stlvrml
diff --git a/tests/bugs/stlvrml/bug22092 b/tests/bugs/stlvrml/bug22092
new file mode 100755 (executable)
index 0000000..0e4c169
--- /dev/null
@@ -0,0 +1,21 @@
+puts "================"
+puts "OCC22092"
+puts "================"
+puts ""
+######################################################################################
+# Crash of application on attempt to load a VRML file with all degenerated triangles
+######################################################################################
+
+loadvrml result [locate_data_file OCC22092-sk97.wrl]
+
+set nb_v_good 16
+set nb_e_good 25
+set nb_w_good 13
+set nb_f_good 13
+set nb_sh_good 2
+set nb_sol_good 0
+set nb_compsol_good 0
+set nb_compound_good 10
+set nb_shape_good 79
+
+set 3dviewer 0
diff --git a/tests/bugs/stlvrml/bug23023 b/tests/bugs/stlvrml/bug23023
new file mode 100644 (file)
index 0000000..c2c9397
--- /dev/null
@@ -0,0 +1,16 @@
+puts "========================"
+puts "OCC23023"
+puts "========================"
+puts ""
+#######################################################################
+# VRML reader fails on attempt to read an attached WRL file
+#######################################################################
+
+set filepath [locate_data_file OCC23023-2056132060_2_tutnicht.wrl]
+if [catch { set list [loadvrml result $filepath] } res] {
+    puts "Faulty: VRML reader fails"
+} else {
+    puts "OK: VRML reader work properly"
+}
+
+set 3dviewer 1
diff --git a/tests/bugs/stlvrml/bug23846 b/tests/bugs/stlvrml/bug23846
new file mode 100755 (executable)
index 0000000..d376d23
--- /dev/null
@@ -0,0 +1,11 @@
+puts "================"
+puts "OCC23846"
+puts "================"
+puts ""
+######################################################################################
+# A crash on reading of a VRML file with wrong indices
+######################################################################################
+
+loadvrml result [locate_data_file T00000112_0000.wrl]
+
+set 3dviewer 1
diff --git a/tests/bugs/stlvrml/bug24675 b/tests/bugs/stlvrml/bug24675
new file mode 100644 (file)
index 0000000..dfeb2dc
--- /dev/null
@@ -0,0 +1,11 @@
+puts "========================"
+puts "OCC24675"
+puts "========================"
+puts ""
+#######################################################################
+# Crash reading a VRML file
+#######################################################################
+
+loadvrml result [locate_data_file T00111111_0000.wrl]
+
+set 3dviewer 1
diff --git a/tests/bugs/xde/bug22092 b/tests/bugs/xde/bug22092
deleted file mode 100755 (executable)
index e7b64de..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-puts "================"
-puts "OCC22092"
-puts "================"
-puts ""
-######################################################################################
-# Crash of application on attempt to load a VRML file with all degenerated triangles
-######################################################################################
-
-set BugNumber OCC22092
-
-loadvrml result [locate_data_file OCC22092-sk97.wrl]
-
-set nb_v_good 16
-set nb_e_good 25
-set nb_w_good 13
-set nb_f_good 13
-set nb_sh_good 2
-set nb_sol_good 0
-set nb_compsol_good 0
-set nb_compound_good 10
-set nb_shape_good 79
-
-set 3dviewer 0
diff --git a/tests/bugs/xde/bug23846 b/tests/bugs/xde/bug23846
deleted file mode 100755 (executable)
index d376d23..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-puts "================"
-puts "OCC23846"
-puts "================"
-puts ""
-######################################################################################
-# A crash on reading of a VRML file with wrong indices
-######################################################################################
-
-loadvrml result [locate_data_file T00000112_0000.wrl]
-
-set 3dviewer 1