[fpc-pascal] with no if assigned() there are bugs
    Martin 
    fpc at mfriebe.de
       
    Wed Sep 21 12:37:43 CEST 2016
    
    
  
On 21/09/2016 09:05, Mark Morgan Lloyd wrote:
>
> Presumably this would be an assertion that something is assigned. A 
> related test is that an object is a specific subtype before using it 
> as such
>
>   Assert(PageControl1.ActivePage.Controls[0] is TSynEdit);
>   syn := TSynEdit(PageControl1.ActivePage.Controls[0]);
The problem is that even a test like that would NOT catch all cases.
syn.destroy;
Assert(syn is TSynEdit);
In this case, it is very likely that "syn is TSynEdit" still returns 
true. (no assertion thrown)
Simply because "syn.destroy;" does not wipe the memory clean. (depending 
on mem manager)
Using -gh
And (optionally) setting the environment HEAPTRC="keepreleased" (that is 
for debugging only)
http://www.freepascal.org/docs-html/rtl/heaptrc/environment.html
will help.
On top of that you can use -CR
Also search suspected code for every "destroy" or "free" and, replace 
with FreeAndNil(var) if possible.
    
    
More information about the fpc-pascal
mailing list