@@ -2402,7 +2402,7 @@ function TJclStringStream.InternalSetNextBuffer(S: TStream;
2402
2402
2403
2403
procedure TJclStringStream.InvalidateBuffers ;
2404
2404
begin
2405
- FStrBufferStart := FStream.Seek(Length(FBOM) , soCurrent);
2405
+ FStrBufferStart := FStream.Seek(0 , soCurrent);
2406
2406
FStrBufferNext := FStrBufferStart;
2407
2407
FStrBufferPosition := 0 ;
2408
2408
FStrBufferCurrentSize := 0 ;
@@ -2953,8 +2953,6 @@ function TJclUTF16Stream.InternalSetNextChar(S: TStream; Ch: UCS4): Boolean;
2953
2953
2954
2954
constructor TJclAutoStream.Create(AStream: TStream; AOwnsStream: Boolean);
2955
2955
var
2956
- ResetPos: Boolean;
2957
- Pos: Int64;
2958
2956
I, MaxLength, ReadLength: Integer;
2959
2957
BOM: array of Byte;
2960
2958
begin
@@ -2963,9 +2961,6 @@ constructor TJclAutoStream.Create(AStream: TStream; AOwnsStream: Boolean);
2963
2961
if MaxLength < Length(BOM_UTF16_LSB) then
2964
2962
MaxLength := Length(BOM_UTF16_LSB);
2965
2963
2966
- ResetPos := False;
2967
- Pos := FStream.Seek(0 , soCurrent);
2968
-
2969
2964
SetLength(BOM, MaxLength);
2970
2965
ReadLength := FStream.Read(BOM[0 ], Length(BOM) * SizeOf(BOM[0 ])) div SizeOf(BOM[0 ]);
2971
2966
@@ -2980,7 +2975,6 @@ constructor TJclAutoStream.Create(AStream: TStream; AOwnsStream: Boolean);
2980
2975
if BOM[I - Low(BOM_UTF8)] <> BOM_UTF8[I] then
2981
2976
begin
2982
2977
FEncoding := seAuto;
2983
- ResetPos := True;
2984
2978
Break;
2985
2979
end ;
2986
2980
end ;
@@ -2994,7 +2988,6 @@ constructor TJclAutoStream.Create(AStream: TStream; AOwnsStream: Boolean);
2994
2988
if BOM[I - Low(BOM_UTF8)] <> BOM_UTF16_LSB[I] then
2995
2989
begin
2996
2990
FEncoding := seAuto;
2997
- ResetPos := True;
2998
2991
Break;
2999
2992
end ;
3000
2993
end ;
@@ -3023,8 +3016,7 @@ constructor TJclAutoStream.Create(AStream: TStream; AOwnsStream: Boolean);
3023
3016
SetLength(FBOM, 0 );
3024
3017
end ;
3025
3018
end ;
3026
- if ResetPos then
3027
- FStream.Seek(Pos, soBeginning);
3019
+ FStream.Seek(Length(FBOM) - ReadLength, soCurrent);
3028
3020
InvalidateBuffers;
3029
3021
end ;
3030
3022
@@ -3090,6 +3082,7 @@ function TJclAutoStream.SkipBOM: LongInt;
3090
3082
begin
3091
3083
// already skipped to determine encoding
3092
3084
Result := 0 ;
3085
+ InvalidateBuffers;
3093
3086
end ;
3094
3087
3095
3088
{ $IFDEF UNITVERSIONING}
0 commit comments