From 186e9b86a3efc2b501016b21b0b48bb9cc7a8387 Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Tue, 3 Oct 2023 20:33:22 +0000 Subject: [PATCH] fpspreadsheet: Introduce a TBufStream.Clear method and make the Size property read-only to avoid issues when setting Size to arbitrary values. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8930 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../source/common/fpsstreams.pas | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/components/fpspreadsheet/source/common/fpsstreams.pas b/components/fpspreadsheet/source/common/fpsstreams.pas index 103b6439a..d9ab11b10 100644 --- a/components/fpspreadsheet/source/common/fpsstreams.pas +++ b/components/fpspreadsheet/source/common/fpsstreams.pas @@ -30,7 +30,6 @@ type function GetPosition: Int64; override; function GetSize: Int64; override; class function IsWritingMode(AMode: Word): Boolean; - procedure SetSize64(const NewSize: Int64); override; public constructor Create(AFileName: String; AMode: Word; ABufSize: Cardinal = Cardinal(-1)); overload; @@ -38,11 +37,13 @@ type ABufSize: Cardinal = Cardinal(-1)); overload; constructor Create(ABufSize: Cardinal = Cardinal(-1)); overload; destructor Destroy; override; + procedure Clear; procedure FillBuffer; procedure FlushBuffer; function Read(var Buffer; Count: Longint): Longint; override; function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; override; function Write(const ABuffer; ACount: Longint): Longint; override; + property Size64: Int64 read GetSize; end; procedure ResetStream(var AStream: TStream); @@ -326,18 +327,14 @@ begin FillBuffer; end; -procedure TBufStream.SetSize64(const NewSize: Int64); +procedure TBufStream.Clear; begin - if NewSize = 0 then - begin - FMemoryStream.Clear; - if not Assigned(FFileStream) then - CreateFileStream; - FFileStream.Size := 0; - FFileStream.Position := 0; - FFileStreamPos := 0; - end; - inherited; + FMemoryStream.Clear; + if not Assigned(FFileStream) then + CreateFileStream; + FFileStream.Size := 0; + FFileStream.Position := 0; + FFileStreamPos := 0; end; function TBufStream.Write(const ABuffer; ACount: LongInt): LongInt;