[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