From: vro Date: Thu, 6 Mar 2014 10:48:36 +0000 (+0400) Subject: 0024675: Crash reading a VRML file X-Git-Tag: V6_8_0_beta~508 X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=5064550f115b4ea5b152297fa435a56d14405454;p=occt-copy.git 0024675: Crash reading a VRML file A node index for a normal is passed through a map of corrected references to node indices. Test case for issue CR24675 --- diff --git a/src/VrmlData/VrmlData_IndexedFaceSet.cxx b/src/VrmlData/VrmlData_IndexedFaceSet.cxx index ce2c5fa5d6..ee7dfd72c7 100644 --- a/src/VrmlData/VrmlData_IndexedFaceSet.cxx +++ b/src/VrmlData/VrmlData_IndexedFaceSet.cxx @@ -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())); diff --git a/tests/bugs/end b/tests/bugs/end index 1431d0af14..d225ba8a38 100755 --- a/tests/bugs/end +++ b/tests/bugs/end @@ -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 diff --git a/tests/bugs/grids.list b/tests/bugs/grids.list index 9a9f75fb29..47b92a10d5 100755 --- a/tests/bugs/grids.list +++ b/tests/bugs/grids.list @@ -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 index 480a2e4d55..0000000000 --- a/tests/bugs/moddata_3/bug23023 +++ /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 index 0000000000..c45bfe9f54 --- /dev/null +++ b/tests/bugs/stlvrml/begin @@ -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 index 0000000000..0e4c169469 --- /dev/null +++ b/tests/bugs/stlvrml/bug22092 @@ -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 index 0000000000..c2c9397b8b --- /dev/null +++ b/tests/bugs/stlvrml/bug23023 @@ -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 index 0000000000..d376d23cde --- /dev/null +++ b/tests/bugs/stlvrml/bug23846 @@ -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 index 0000000000..dfeb2dc2da --- /dev/null +++ b/tests/bugs/stlvrml/bug24675 @@ -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 index e7b64de91c..0000000000 --- a/tests/bugs/xde/bug22092 +++ /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 index d376d23cde..0000000000 --- a/tests/bugs/xde/bug23846 +++ /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