Browse Source

--- Merging r22557 into '.':
U packages/fcl-base/src/base64.pp
--- Merging r22584 into '.':
U packages/fcl-base/src/inifiles.pp
--- Merging r22713 into '.':
G packages/fcl-base/src/base64.pp

# revisions: 22557,22584,22713
r22557 | marco | 2012-10-06 13:04:31 +0200 (Sat, 06 Oct 2012) | 2 lines
Changed paths:
M /trunk/packages/fcl-base/src/base64.pp

* cleanup of base64 by Luiz Americo. Mantis #23021
r22584 | michael | 2012-10-08 12:58:32 +0200 (Mon, 08 Oct 2012) | 1 line
Changed paths:
M /trunk/packages/fcl-base/src/inifiles.pp

* Patch from Luiz Americo to clean up destructor/constructor
fetching log for rev 22713 - 336 characters
r22713 | marco | 2012-10-18 10:01:15 +0200 (Thu, 18 Oct 2012) | 2 lines
Changed paths:
M /trunk/packages/fcl-base/src/base64.pp

* boolean for decodestringbase64 to select strict mode.

git-svn-id: branches/fixes_2_6@22715 -

marco 12 years ago
parent
commit
dce26a7f24
2 changed files with 10 additions and 27 deletions
  1. 8 13
      packages/fcl-base/src/base64.pp
  2. 2 14
      packages/fcl-base/src/inifiles.pp

+ 8 - 13
packages/fcl-base/src/base64.pp

@@ -36,7 +36,6 @@ type
     Buf: array[0..2] of Byte;
     BufSize: Integer;    // # of bytes used in Buf
   public
-    constructor Create(ASource: TStream);
     destructor Destroy; override;
     Function Flush : Boolean;
     function Write(const Buffer; Count: Longint): Longint; override;
@@ -88,7 +87,7 @@ type
   end;
 
 function EncodeStringBase64(const s:string):String;
-function DecodeStringBase64(const s:string):String;
+function DecodeStringBase64(const s:string;strict:boolean=false):String;
 
 implementation
 
@@ -127,11 +126,6 @@ const
 
   Alphabet = ['a'..'z','A'..'Z','0'..'9','+','/','=']; // all 65 chars that are in the base64 encoding alphabet
 
-constructor TBase64EncodingStream.Create(ASource: TStream);
-begin
-  inherited Create(ASource);
-end;
-
 function TBase64EncodingStream.Flush : Boolean;
 
 var
@@ -423,7 +417,7 @@ begin
   raise EStreamError.Create('Invalid stream operation');
 end;
 
-function DecodeStringBase64(const s:string):String;
+function DecodeStringBase64(const s:string;strict:boolean=false):String;
 
 var 
   Instream, 
@@ -434,11 +428,13 @@ begin
   try
     Outstream:=TStringStream.Create('');
     try 
-      Decoder:=TBase64DecodingStream.Create(Instream,bdmMIME);
+      if strict then
+        Decoder:=TBase64DecodingStream.Create(Instream,bdmStrict)
+      else
+        Decoder:=TBase64DecodingStream.Create(Instream,bdmMIME);
       try
          Outstream.CopyFrom(Decoder,Decoder.Size);
-         Outstream.Position:=0;
-         Result:=Outstream.ReadString(Outstream.Size);
+         Result:=Outstream.DataString;
       finally
         Decoder.Free;
         end;
@@ -464,8 +460,7 @@ begin
     finally 
       Encoder.Free;
       end;
-    Outstream.Position:=0;
-    Result:=Outstream.ReadString(Outstream.Size);
+    Result:=Outstream.DataString;
   finally
     Outstream.free;
     end;

+ 2 - 14
packages/fcl-base/src/inifiles.pp

@@ -69,7 +69,6 @@ type
   protected
     procedure Changed; override;
   public
-    constructor Create;
     destructor Destroy; override;
     function IndexOf(const S: String): Integer; override;
     function IndexOfName(const Name: String): Integer; override;
@@ -227,21 +226,10 @@ end;
 
 { THashedStringList }
 
-constructor THashedStringList.Create;
-begin
-  inherited;
-  FValueHash := nil;
-  FNameHash := nil;
-  FValueHashValid := False;
-  FNameHashValid := False;
-end;
-
 destructor THashedStringList.Destroy;
 begin
-  if Assigned(FValueHash) then
-    FValueHash.Free;
-  if Assigned(FNameHash) then
-    FNameHash.Free;
+  FreeAndNil(FValueHash);
+  FreeAndNil(FNameHash);
   inherited Destroy;
 end;