Program: 120408
Project: 120408
Buggy source:
private void updateData(List<Parameter> params){
  final Table table=this.getTable();
  final TableViewer viewer=this.getTableViewerCreator().getTableViewer();
  final TableEditor editor=new TableEditor(table);
  final int eDITABLECOLUMN=2;
  table.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent e){
      Control oldEditor=editor.getEditor();
      if (oldEditor != null) {
        oldEditor.dispose();
      }
      TableItem item=(TableItem)e.item;
      if (item == null) {
        return;
      }
      Parameter param=(Parameter)item.getData();
      if (param instanceof ListParameter) {
        createCombo((ListParameter)param,item);
      }
    }
    private void createCombo(    final ListParameter list,    TableItem item){
      final CCombo combo=new CCombo(table,SWT.NONE);
      combo.setItems(list.getValues());
      combo.setFocus();
      editor.setEditor(combo,item,eDITABLECOLUMN);
      combo.setText(list.getValue());
      Point size=combo.computeSize(SWT.DEFAULT,table.getItemHeight());
      editor.horizontalAlignment=SWT.LEFT;
      editor.minimumHeight=size.y;
      editor.minimumWidth=size.x;
      combo.addSelectionListener(new SelectionAdapter(){
        @Override public void widgetSelected(        SelectionEvent e){
          list.setValue(combo.getText());
          viewer.refresh(list);
          ext.setChanged(true);
          rowGenTableEditor2.getTableViewerCreator().getTableViewer().refresh();
        }
      }
);
      combo.addFocusListener(new FocusListener(){
        public void focusGained(        FocusEvent e){
        }
        /** 
 * Sent when a control loses focus.
 * @param e an event containing information about the focus change
 */
        public void focusLost(        FocusEvent e){
          combo.dispose();
        }
      }
);
    }
  }
);
  getTableViewerCreator().setInputList(params);
}

Fixed version (ground truth):
private void updateData(List<Parameter> params){
  final Table table=this.getTable();
  final TableViewer viewer=this.getTableViewerCreator().getTableViewer();
  final TableEditor editor=new TableEditor(table);
  final int eDITABLECOLUMN=2;
  table.addSelectionListener(new SelectionAdapter(){
    @Override public void widgetSelected(    SelectionEvent e){
      Control oldEditor=editor.getEditor();
      if (oldEditor != null) {
        oldEditor.dispose();
      }
      TableItem item=(TableItem)e.item;
      if (item == null) {
        return;
      }
      Parameter param=(Parameter)item.getData();
      if (param instanceof ListParameter) {
        createCombo((ListParameter)param,item);
      }
    }
    private void createCombo(    final ListParameter list,    TableItem item){
      final CCombo combo=new CCombo(table,SWT.NONE);
      combo.setItems(list.getValues());
      combo.setFocus();
      editor.setEditor(combo,item,eDITABLECOLUMN);
      combo.setText(list.getValue());
      Point size=combo.computeSize(SWT.DEFAULT,table.getItemHeight());
      editor.horizontalAlignment=SWT.LEFT;
      editor.minimumHeight=size.y;
      editor.minimumWidth=size.x;
      combo.addSelectionListener(new SelectionAdapter(){
        @Override public void widgetSelected(        SelectionEvent e){
          list.setValue(combo.getText());
          viewer.refresh(list);
          ext.setChanged(true);
          rowGenTableEditor2.getTableViewerCreator().getTableViewer().refresh();
        }
      }
);
      combo.addFocusListener(new FocusListener(){
        @Override public void focusGained(        FocusEvent e){
        }
        /** 
 * Sent when a control loses focus.
 * @param e an event containing information about the focus change
 */
        @Override public void focusLost(        FocusEvent e){
          combo.dispose();
        }
      }
);
    }
  }
);
  getTableViewerCreator().setInputList(params);
}