Am 03.01.2018 12:32 schrieb "Tony Whyman" <tony.why...@mccallumwhyman.com>:


function CheckSynchronize(...)

and this ends with:

    else
      begin
      { for Queue entries we dispose the entry and raise the exception }
      Dispose(tmpentry);
      if Assigned(exceptobj) then
        raise exceptobj;
      end;
    tmpentry := PopThreadQueueHead;
    end;

The line "Dispose(tmpentry);" also disposes of a SynchronizeEvent but,
unlike TThread.DoneSynchronizeEvent, there is no RtlEventDestroy.

Am I correct in pointing the finger here for the memory leak?


I know you already found your problem, but nevertheless as explanation:
this code is only reached by asynchronously added events (TThread.Queue())
and there no event is needed, this none is freed or even allocated.

Regards,
Sven
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to