[Lazarus] TStringList.Destroy generate SIGSEGV with Zeos 6.6.6
Daniel Simoes de Ameida
dopidaniel at yahoo.com.br
Sat Mar 31 19:35:26 CEST 2012
Thanks Zeljko, It works
[]s Daniel
Conheça o Projeto ACBr - Automaçao Comercial Brasil
DJSystem a Loja Patrocinadora do ACBr
>________________________________
> De: zeljko <zeljko at holobit.net>
>Para: lazarus at lists.lazarus.freepascal.org
>Enviadas: Sábado, 31 de Março de 2012 3:47
>Assunto: Re: [Lazarus] TStringList.Destroy generate SIGSEGV with Zeos 6.6.6
>
>
>On Friday 30 of March 2012 16:37:09 Daniel Simoes de Ameida wrote:
>> 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...
>
>
>
>
>No, just call Clear before destroying FSQL (afair) ...that's how I patched my zeos copy and it works fine.
>
>
>--- trunk/zeosdbo/src/component/ZAbstractRODataset.pas 2012/01/09 14:53:38 1368
>+++ trunk/zeosdbo/src/component/ZAbstractRODataset.pas 2012/03/07 10:38:11 1385
>@@ -531,7 +531,7 @@
>except
>end;
>end;
>-
>+ FSQL.Clear;
>FreeAndNil(FSQL);
>FreeAndNil(FParams);
>FreeAndNil(FCurrentRows);
>
>
>
>
>zeljko
>
>
>>
>> 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
>
>
>--
>_______________________________________________
>Lazarus mailing list
>Lazarus at lists.lazarus.freepascal.org
>http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20120331/3e3bb38d/attachment-0003.html>
More information about the Lazarus
mailing list