anchor.diff:  destructor TCECdbWidget.destroy;
   begin
     if Enabled then begin
  -    cdbFree;
  +    killProcess(fCdbProc);
       EntitiesConnector.removeObserver(self);
     end;
     inherited;
  
positive.code: 
  procedure TCECdbWidget.cdbOutputToGui;
  var
    str: TMemoryStream;
    lst: TStringList;
    cnt: Integer;
    sum: Integer;
  begin
    if fCdbProc = nil then exit;
  
    cnt := 0;
    sum := 0;
    str := TMemoryStream.Create;
    lst := TStringList.Create;
  
    while fCdbProc.Output.NumBytesAvailable <> 0 do
    begin
      str.Size := str.Size + 1024;
      cnt := fCdbProc.Output.Read((str.Memory + sum)^, 1024);
      sum += cnt;
    end;
  
    str.Size := sum;
    lst.LoadFromStream(str);
  
    for cnt := 0 to lst.Count-1 do
      lstCdbOut.AddItem(lst.Strings[cnt], nil);
    lstCdbOut.Items[lstCdbOut.Items.Count-1].MakeVisible(true);
  
    lst.Free;
    str.Free;
  end;
  
  procedure TCECdbWidget.cdbOutput(sender: TObject);
  
negative.code:     procedure cdbOutput(sender: TObject);
      procedure cdbTerminate(sender: TObject);
      procedure cdbOutputToGui;
    public
      constructor create(aOwner: TComponent); override;
      destructor destroy; override;
  