فهرست منبع

* Patch from LacaK, eliminates redundant variant finalization and try..finally block in TFMTBcdFactory.CastTo

git-svn-id: trunk@17319 -
sergei 14 سال پیش
والد
کامیت
6bca660e76
1فایلهای تغییر یافته به همراه10 افزوده شده و 15 حذف شده
  1. 10 15
      rtl/objpas/fmtbcd.pp

+ 10 - 15
rtl/objpas/fmtbcd.pp

@@ -4003,21 +4003,16 @@ procedure TFMTBcdFactory.CastTo(var Dest: TVarData; const Source: TVarData; cons
 var v: TVarData;
 begin
   if Source.vType=VarType then
-  begin
-    VarDataInit(v);
-    try
-      if aVarType = varString then
-        VarDataFromStr(Dest, BCDToStr(TFMTBcdVarData(Source.vPointer).BCD))
-      else
-      begin
-        v.vType:=varDouble;
-        v.vDouble:=BCDToDouble(TFMTBcdVarData(Source.vPointer).BCD);
-        VarDataCastTo(Dest, v, aVarType); //now cast Double to any requested type
-      end;
-    finally
-      VarDataClear(v);
-    end;
-  end
+    if aVarType = varString then
+      VarDataFromStr(Dest, BCDToStr(TFMTBcdVarData(Source.vPointer).BCD))
+    else
+    begin
+      VarDataInit(v);
+      v.vType:=varDouble;
+      v.vDouble:=BCDToDouble(TFMTBcdVarData(Source.vPointer).BCD);
+      VarDataCastTo(Dest, v, aVarType); //now cast Double to any requested type
+      { finalizing v is not necessary here (Double is a simple type) }
+    end
   else
     inherited;
 end;