Browse Source

* Merging revisions 47061 from trunk:
------------------------------------------------------------------------
r47061 | michael | 2020-10-07 12:15:13 +0200 (Wed, 07 Oct 2020) | 1 line

* Fix bug where position is not advanced when calling ReadAnsiString/ReadString
------------------------------------------------------------------------

git-svn-id: branches/fixes_3_2@47062 -

michael 4 years ago
parent
commit
dbcd3d0b64
2 changed files with 6 additions and 4 deletions
  1. 4 4
      rtl/objpas/classes/classesh.inc
  2. 2 0
      rtl/objpas/classes/streams.inc

+ 4 - 4
rtl/objpas/classes/classesh.inc

@@ -971,7 +971,7 @@ type
     procedure WriteWord(w : Word);
     procedure WriteDWord(d : Cardinal);
     procedure WriteQWord(q : QWord);
-    Procedure WriteAnsiString (const S : String);
+    Procedure WriteAnsiString (const S : String); virtual;
     property Position: Int64 read GetPosition write SetPosition;
     property Size: Int64 read GetSize write SetSize64;
   end;
@@ -1105,9 +1105,9 @@ type
     Destructor Destroy; override;
     function ReadUnicodeString(Count: Longint): UnicodeString;
     procedure WriteUnicodeString(const AString: UnicodeString);
-    function ReadAnsiString(Count: Longint): AnsiString;
-    procedure WriteAnsiString(const AString: AnsiString);
-    function ReadString(Count: Longint): string;
+    function ReadAnsiString(Count: Longint): AnsiString; overload;
+    procedure WriteAnsiString(const AString: AnsiString); override;
+    function ReadString(Count: Longint): string; 
     procedure WriteString(const AString: string);
     property DataString: string read GetDataString;
     Property UnicodeDataString : UnicodeString Read GetUnicodeDataString;

+ 2 - 0
rtl/objpas/classes/streams.inc

@@ -939,6 +939,7 @@ begin
   NewLen:=Size-FPosition;
   If NewLen>Count then NewLen:=Count;
   Result:=FEncoding.GetAnsiString(FBytes,FPosition,NewLen);
+  Inc(FPosition,NewLen);
 end;
 
 procedure TStringStream.WriteAnsiString(const AString: AnsiString);
@@ -988,6 +989,7 @@ begin
     begin
     SetLength(Result, NewLen);
     Move(FBytes[FPosition],Result[1],NewLen);
+    inc(FPosition,Newlen);
     end;
 end;