[Lazarus] TStringList.Destroy generate SIGSEGV with Zeos 6.6.6

Daniel Simoes de Ameida dopidaniel at yahoo.com.br
Fri Mar 30 16:37:09 CEST 2012


Hi All,
On recent FPC 2.6.1 I notice a strange behavior with TStringList.Destroy
TStringList.Destroy, calls method TStringList.Clear, but the problem is that TStringList.Clear call methods Changing and Changed

This affect Zeos 6.6.6, I presume is because Zeos try to read Params from the SQL.Text, every time a Change occurs

I suggest a new InternalClear method, without calling Change/Changed that can be used in Destroy and Clear methods...

Some thing like this:

destructor TStringList.Destroy;
Var I : Longint;
begin
  FOnChange:=Nil;
  FOnChanging:=Nil;
  InternalClear;
  Inherited destroy;
end;

Procedure TStringList.Clear;
Var I : longint;
begin
  if FCount = 0 then Exit;
  Changing;
  InternalClear;
  Changed;
end;

Procedure TStringList.InternalClear;  (Private)
Var I : longint;
begin
  if FCount = 0 then Exit;
  
  if FOwnsObjects then
    begin
      For I:=0 to FCount-1 do
        begin
          Flist^[I].FString:='';
          freeandnil(Flist^[i].FObject);
        end;
    end
  else
    begin
      For I:=0 to FCount-1 do
        Flist^[I].FString:='';
    end;
  FCount:=0;
  SetCapacity(0);
end;



 
[]s Daniel

Conheça o Projeto ACBr - Automaçao Comercial Brasil
DJSystem a Loja Patrocinadora do ACBr
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20120330/689f64eb/attachment-0002.html>


More information about the Lazarus mailing list