0025740: VrmlData_Scene::WriteArrIndex() writes extra point indices.
authorakz <akz@opencascade.com>
Thu, 5 Feb 2015 12:22:13 +0000 (15:22 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 5 Feb 2015 12:27:45 +0000 (15:27 +0300)
Reason of bug: at the end of writing indices the "buf" was written double times.
Fix: At the end of operation skip one WriteLine.

Test case for issue CR25740

src/VrmlData/VrmlData_Scene.cxx
tests/bugs/stlvrml/bug25740 [new file with mode: 0644]

index 5a83eca..ff57177 100644 (file)
@@ -898,6 +898,8 @@ VrmlData_ErrorStatus VrmlData_Scene::WriteArrIndex
             char * ptr = &buf[0];
             for (Standard_Integer i = 0; i < nVal; i++) {
               Sprintf (ptr, "%d,", arrVal[i]);
+              if (i == nVal - 1)
+                break;
               ptr = strchr (ptr, ',') + 1;
               if ((ptr - &buf[0]) > (ptrdiff_t)aLineLimit) {
                 WriteLine(buf);
diff --git a/tests/bugs/stlvrml/bug25740 b/tests/bugs/stlvrml/bug25740
new file mode 100644 (file)
index 0000000..6a032fa
--- /dev/null
@@ -0,0 +1,43 @@
+puts "================"
+puts "OCC25740"
+puts "================"
+puts ""
+#######################################################################################
+# VrmlData_Scene::WriteArrIndex() writes extra point indices
+#######################################################################################
+
+set BugNumber OCC25740
+
+set aFile $imagedir/${test_image}.vrml
+
+ptorus p 10 8 0 90 120
+incmesh p 0.1
+
+explode p e
+
+storevrml p_3 ${aFile} 1 1
+
+set status 1
+if { ![file exists ${aFile}] } {
+  set status 0
+}
+
+# Check file size
+set filesize [ file size ${aFile} ]
+if { ${filesize} == 0 } {
+  set status 0
+}
+
+set fd0 [ open ${aFile} r ]
+set filecontent [ read ${fd0} ]
+close $fd0
+
+if { ![regexp {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\n\s+16,17,18,19,20,21,22,23,24,25,26,27,28, -1} ${filecontent} full] } {
+  set status 0 
+}
+
+if {$status == 1} {
+  puts "OK ${BugNumber}"
+} else {
+  puts "Faulty ${BugNumber}"
+}