Memory error in widestring delete
Original Reporter info from Mantis: mse
-
Reporter name: Martin Schreiber
Original Reporter info from Mantis: mse
- Reporter name: Martin Schreiber
Description:
A malicious bug. ;-)
Test result:
An unhandled exception occurred at $00401C48 :
EAccessViolation : Access violation
$00401C48 ALIGNEDFWDMOVESSE_3, line 346 of C:/FPC/svn/fixes_2_2/rtl/i386/fas
tmove.inc
$0040145B main, line 11 of widestringdelete.pas
Problem in rtl/inc/wustrings.inc:
Procedure Delete (Var S : WideString; Index,Size: SizeInt);
Var
LS : SizeInt;
begin
If Length(S)=0 then
exit;
if index<=0 then
exit;
LS:=PWideRec(Pointer(S)-WideFirstOff)^.Len div sizeof(WideChar);
if (Index<=LS) and (Size>0) then
begin
UniqueString (S);
if Size+Index>LS then
Size:=LS-Index+1;
if Index+Size<=LS then
begin
Dec(Index);
Move(PWideChar(S)[Index+Size],PWideChar(S)[Index],(LS-Index+1)*sizeof(WideChar));
// Move(PWideChar(S)[Index+Size],PWideChar(S)[Index],
// (LS-Index-Size+1)*sizeof(WideChar)); //2008-02-09 mse
end;
Setlength(s,LS-Size);
end;
end;
Mantis conversion info:
- Mantis ID: 10800
- Version: 2.2.1
- Fixed in version: 2.2.2
- Fixed in revision: 10264 (#48735be0)