[Lazarus] TStringList.Destroy generate SIGSEGV with Zeos 6.6.6

zeljko zeljko at holobit.net
Sat Mar 31 08:47:29 CEST 2012


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20120331/3b8c8a7c/attachment-0003.html>


More information about the Lazarus mailing list