[yunqa.de] Re: App hangs if HtmlTagFilters not freed

  • From: Delphi Inspiration <delphi@xxxxxxxx>
  • To: yunqa@xxxxxxxxxxxxx
  • Date: Mon, 24 Jun 2019 11:32:14 +0200

The app might seem to hang, but what you are really seeing is an
EDIContainersError exception "Class TDIKeyHandler: ItemHandler in use
during destruction". It is only raised when the application closes.

This is expected behavior. It warns developers if a resource has not
been freed and would result in a memory leak.

In your case the resource is automatically created by the TDITagFilters
class. As you pointed out correctly, the resource is automatically freed
when TDITagFilters is freed.

You seem to assume that TDIHtmlParser should free the TDITagFilters
instance to which its HtmlParser.HtmlTagFilters property is set.
However, this is not the case.

I have extended the documentation to make this clear. It will be part of
the next release of DIHtmlParer.

The new documentation text follows below. Please feel free to comment.

Ralf

--------------------------------------------------------------------

prop property HtmlTagFilters: TDITagFilters
  read FHtmlTagFilters
  write SetHtmlTagFilters;

Set up filtering for individual HTML tags. To enable, set HtmlTagFilters
to an instance of TDITagFilters. TDIHtmlParser will then apply the
filtering rules defined there to the current parsing. To disable, set to
nil.

Multiple instances of TDIHtmlParser may point to a single instance of
TDITagFilters at the same time. This guarantees efficient use of code
and memory: One instance to filter them all.

Because a TDITagFilters instance may be used multiple times,
TDIHtmlParser does not take ownership of the TDITagFilters instance.
This means that when a TDIHtmlParser is destroyed, it does not free the
TDITagfilters instance to which its HtmlTagFilters is set. Applications
must take care to free the TDITagFilters instance to avoid memory leaks.

On 20.06.2019 13:24, David Marcus wrote:

> If you forget to free HtmlTagFilters, the app hangs.
_______________________________________________
Delphi Inspiration mailing list
yunqa@xxxxxxxxxxxxx
//www.freelists.org/list/yunqa



Other related posts: