anchor.diff:    FPublishersCriticalSection.Free;
     if Assigned(FCurrentMsg) then
       FCurrentMsg.Free;
  +  try
  +    for i:= 0 to FOwnedPublishers.Count-1 do
  +      TmLogPublisher(FOwnedPublishers.Items[i]).Free;
  +  except
  +    //
  +  end;
  +  FOwnedPublishers.Free;
  +
     inherited;
   end;
   
  
positive.code: 
  { TmLogManager }
  
  
  procedure TmLogManager.PushMessage(aLevel : TmLogMessageLevel; aContext, aMessage : string);
  begin
  
negative.code:   i : integer;
  begin
    FStartEvent.WaitFor(INFINITE);
  
    if not Self.Terminated then
    begin
      try
        while (not Self.Terminated) or ((not FTrashMessagesOnQuit) and (not FMessages.Empty)) do
        begin
          FreeAndNil(FCurrentMsg);
          FCurrentMsg := FMessages.PullMessage;
          while (FCurrentMsg <> nil) do
          begin
            if (not FTrashMessagesOnQuit) or (not Self.Terminated) then
            begin
              FPublishersCriticalSection.Acquire;
              try
  