0029165: Visualization - misuse of enumeration in Prs3d_DatumAspect
authorabv <abv@opencascade.com>
Fri, 29 Sep 2017 16:04:13 +0000 (19:04 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 5 Oct 2017 10:18:15 +0000 (13:18 +0300)
Methods SetDrawFirstAndSecondAxis() and SetDrawThirdAxis() of the class Prs3d_DatumAspect are corrected to ensure that myAxis may be set only to valid values of the enum, and avoid unsafe operations.

src/Prs3d/Prs3d_DatumAspect.cxx

index 974538b..9a691cf 100644 (file)
@@ -85,11 +85,11 @@ void Prs3d_DatumAspect::SetDrawFirstAndSecondAxis (Standard_Boolean theToDraw)
 {
   if (theToDraw)
   {
-    myAxes = Prs3d_DatumAxes(myAxes | Prs3d_DA_XAxis | Prs3d_DA_YAxis);
+    myAxes = ((myAxes & Prs3d_DA_ZAxis) != 0 ? Prs3d_DA_XYZAxis : Prs3d_DA_XYAxis);
   }
   else
   {
-    myAxes = Prs3d_DatumAxes(myAxes & !Prs3d_DA_XAxis & !Prs3d_DA_YAxis);
+    myAxes = Prs3d_DA_ZAxis;
   }
 }
 
@@ -101,11 +101,11 @@ void Prs3d_DatumAspect::SetDrawThirdAxis (Standard_Boolean theToDraw)
 {
   if (theToDraw)
   {
-    myAxes = Prs3d_DatumAxes(myAxes | Prs3d_DA_ZAxis);
+    myAxes = ((myAxes & Prs3d_DA_XYAxis) != 0 ? Prs3d_DA_XYZAxis : Prs3d_DA_ZAxis);
   }
   else
   {
-    myAxes = Prs3d_DatumAxes(myAxes & !Prs3d_DA_ZAxis);
+    myAxes = Prs3d_DA_XYAxis;
   }
 }