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