]> OCCT Git - occt.git/commitdiff
0032813: Units: ToSI and FromSI return cached dimension from previous request when... IR-2022-02-04
authoroan <oan@opencascade.com>
Thu, 3 Feb 2022 10:20:59 +0000 (13:20 +0300)
committersmoskvin <smoskvin@opencascade.com>
Fri, 4 Feb 2022 16:25:58 +0000 (19:25 +0300)
Cache value only if all necessary preparation steps are done.

src/Units/Units.cxx

index 802121ffe04c0749ea10fe5b8b6a227560c9e6cd..202f63c892faf06f0f272f27beaa7991decb81ee 100644 (file)
@@ -240,8 +240,6 @@ Standard_Real Units::ToSI(const Standard_Real aData,
                           Handle(Units_Dimensions) &dim)
 {
   if(lastunit != aUnit ) {
-
-    lastunit = TCollection_AsciiString(aUnit);
     Units_UnitSentence unitsentence(aUnit);
     if(!unitsentence.IsDone()) {
 #ifdef OCCT_DEBUG
@@ -257,6 +255,7 @@ Standard_Real Units::ToSI(const Standard_Real aData,
         Handle(Units_ShiftedToken)::DownCast(token) ;
       lastmove = stoken->Move();
     }
+    lastunit = TCollection_AsciiString(aUnit);
     lastdimension = token->Dimensions();
   }
   dim = lastdimension;
@@ -286,7 +285,6 @@ Standard_Real Units::FromSI(const Standard_Real aData,
                             Handle(Units_Dimensions) &dim)
 {
   if(lastunit != aUnit) {
-    lastunit = TCollection_AsciiString(aUnit);
     Units_UnitSentence unitsentence(aUnit);
     if(!unitsentence.IsDone()) {
 #ifdef OCCT_DEBUG
@@ -302,6 +300,7 @@ Standard_Real Units::FromSI(const Standard_Real aData,
         Handle(Units_ShiftedToken)::DownCast(token) ;
       lastmove = stoken->Move();
     }
+    lastunit = TCollection_AsciiString(aUnit);
     lastdimension = token->Dimensions();
   }
   dim = lastdimension;