]> OCCT Git - occt.git/commitdiff
0031876: Configuration - Prs3d_Arrow::DrawShaded() crashes in msvc10 win32 Release...
authorkgv <kgv@opencascade.com>
Sat, 24 Oct 2020 18:01:50 +0000 (21:01 +0300)
committerbugmaster <bugmaster@opencascade.com>
Mon, 26 Oct 2020 16:45:16 +0000 (19:45 +0300)
Use longer code syntax to workaround compiler bug.

src/Prs3d/Prs3d_Arrow.cxx

index 5294ec340cebfb0e17be5dc416fa177492b058f7..9900ff1e89a5e26940daed5b330218513cf170e7 100644 (file)
@@ -138,9 +138,18 @@ Handle(Graphic3d_ArrayOfTriangles) Prs3d_Arrow::DrawShaded (const gp_Ax1&
     return Handle(Graphic3d_ArrayOfTriangles)();
   }
 
-  Standard_Integer aMaxVertexs = (aNbTrisTube > 0 ? Prs3d_ToolCylinder::VerticesNb (theNbFacettes, 1) : 0)
-                               + (aNbTrisCone > 0 ? Prs3d_ToolDisk    ::VerticesNb (theNbFacettes, 1)
-                                                  + Prs3d_ToolCylinder::VerticesNb (theNbFacettes, 1) : 0);
+  Standard_Integer aMaxVertexs = 0;
+  if (aNbTrisTube > 0)
+  {
+    aMaxVertexs += Prs3d_ToolCylinder::VerticesNb (theNbFacettes, 1);
+  }
+  if (aNbTrisCone > 0)
+  {
+    // longer syntax to workaround msvc10 32-bit optimizer bug (#0031876)
+    aMaxVertexs += Prs3d_ToolDisk::VerticesNb (theNbFacettes, 1);
+    aMaxVertexs += Prs3d_ToolCylinder::VerticesNb (theNbFacettes, 1);
+  }
+
   Handle(Graphic3d_ArrayOfTriangles) anArray = new Graphic3d_ArrayOfTriangles (aMaxVertexs, aNbTris * 3, Graphic3d_ArrayFlags_VertexNormal);
   if (aNbTrisTube != 0)
   {