Program: 129504
Project: 129504
Buggy source:
/** 
 * DOC amaumont Comment method "resizeControl".
 * @param e
 */
private synchronized void controlResizedExecute(ControlEvent e){
  final TableColumn currentTableColumn=(TableColumn)e.widget;
  if (!WindowSystem.isGTK() && !columnsResizingByLayout && (fillHorizontal || continuousLayout)) {
    if (continuousLayout && !fillHorizontal) {
      asyncThreadingForManualColumnResizingFalse.interrupt();
      if (!fillHorizontal) {
        manualResizing=false;
      }
    }
    if (!manualResizing) {
      manualResizing=true;
      final Table table=currentTableColumn.getParent();
      Rectangle bounds=table.getClientArea();
      if (table.getHorizontalBar().getSelection() == 0) {
        if (!WindowSystem.isGTK()) {
          changeColumnLayoutData(currentTableColumn,bounds);
        }
        lastDisplayedWidth=bounds.width + widthAdjustValue;
        referenceWidth=computeCurrentTableWidth();
        TableColumn[] tableColumns=table.getColumns();
        if (fillHorizontal && tableColumns.length - 1 >= 0) {
          int widthAll=referenceWidth;
          int indexLastColumn=tableColumns.length - 1;
          TableColumn lastTableColumn=tableColumns[indexLastColumn];
          TableViewerCreatorColumnNotModifiable tableViewerCreatorColumn=(TableViewerCreatorColumnNotModifiable)tableViewerCreator.getColumns().get(indexLastColumn);
          ColumnLayoutData columnLayoutData=columnsLayoutData.get(indexLastColumn);
          int minimumWidth=0;
          if (columnLayoutData instanceof ColumnWeightData) {
            minimumWidth=((ColumnWeightData)columnLayoutData).minimumWidth;
          }
 else           if (columnLayoutData instanceof ColumnPixelData) {
            minimumWidth=((ColumnPixelData)columnLayoutData).width;
          }
          int widthLastColumn=lastTableColumn.getWidth();
          int newColumnWidth=lastDisplayedWidth - (widthAll - widthLastColumn);
          if (newColumnWidth > minimumWidth) {
            if (referenceWidth - widthLastColumn < lastDisplayedWidth) {
              if (newColumnWidth > 0) {
                lastTableColumn.setWidth(newColumnWidth);
                changeColumnLayoutData(lastTableColumn,bounds);
              }
            }
 else {
              int width=tableViewerCreatorColumn.getWidth();
              if (columnLayoutData instanceof ColumnWeightData) {
                lastTableColumn.setWidth(width);
                changeColumnLayoutData(lastTableColumn,bounds);
              }
            }
          }
          referenceWidth=computeCurrentTableWidth() + widthAdjustValue;
        }
      }
      if (continuousLayout && !fillHorizontal) {
        asyncThreadingForManualColumnResizingFalse.start();
      }
    }
    if (fillHorizontal) {
      manualResizing=false;
    }
    tableViewerCreator.redrawTableEditorControls();
  }
}

Fixed version (ground truth):
/** 
 * DOC amaumont Comment method "resizeControl".
 * @param e
 */
private synchronized void controlResizedExecute(ControlEvent e){
  final TableColumn currentTableColumn=(TableColumn)e.widget;
  if (!WindowSystem.isGTK() && !columnsResizingByLayout && (fillHorizontal || continuousLayout)) {
    if (continuousLayout && !fillHorizontal) {
    }
    if (!manualResizing) {
      manualResizing=true;
      final Table table=currentTableColumn.getParent();
      Rectangle bounds=table.getClientArea();
      if (table.getHorizontalBar().getSelection() == 0) {
        if (!WindowSystem.isGTK()) {
          changeColumnLayoutData(currentTableColumn,bounds);
        }
        lastDisplayedWidth=bounds.width + widthAdjustValue;
        referenceWidth=computeCurrentTableWidth();
        TableColumn[] tableColumns=table.getColumns();
        if (fillHorizontal && tableColumns.length - 1 >= 0) {
          int widthAll=referenceWidth;
          int indexLastColumn=tableColumns.length - 1;
          TableColumn lastTableColumn=tableColumns[indexLastColumn];
          TableViewerCreatorColumnNotModifiable tableViewerCreatorColumn=(TableViewerCreatorColumnNotModifiable)tableViewerCreator.getColumns().get(indexLastColumn);
          ColumnLayoutData columnLayoutData=columnsLayoutData.get(indexLastColumn);
          int minimumWidth=0;
          if (columnLayoutData instanceof ColumnWeightData) {
            minimumWidth=((ColumnWeightData)columnLayoutData).minimumWidth;
          }
 else           if (columnLayoutData instanceof ColumnPixelData) {
            minimumWidth=((ColumnPixelData)columnLayoutData).width;
          }
          int widthLastColumn=lastTableColumn.getWidth();
          int newColumnWidth=lastDisplayedWidth - (widthAll - widthLastColumn);
          if (newColumnWidth > minimumWidth) {
            if (referenceWidth - widthLastColumn < lastDisplayedWidth) {
              if (newColumnWidth > 0) {
                lastTableColumn.setWidth(newColumnWidth);
                changeColumnLayoutData(lastTableColumn,bounds);
              }
            }
 else {
              int width=tableViewerCreatorColumn.getWidth();
              if (columnLayoutData instanceof ColumnWeightData) {
                lastTableColumn.setWidth(width);
                changeColumnLayoutData(lastTableColumn,bounds);
              }
            }
          }
          referenceWidth=computeCurrentTableWidth() + widthAdjustValue;
        }
      }
      if (continuousLayout && !fillHorizontal) {
        Runnable runable=new Runnable(){
          public void run(){
            try {
synchronized (this) {
                wait(500);
                manualResizing=false;
              }
            }
 catch (            InterruptedException e) {
              manualResizing=false;
            }
          }
        }
;
        new Thread(runable).start();
      }
    }
    if (fillHorizontal) {
      manualResizing=false;
    }
    tableViewerCreator.redrawTableEditorControls();
  }
}