Program: 79716
Project: 79716
Buggy source:
private void logIt(int toolFlag,boolean messageIsRequest,IHttpRequestResponse messageInfo,IInterceptedProxyMessage message){
  if (loggerPreferences.isEnabled()) {
    if (messageInfo == null && message != null) {
      messageInfo=message.getMessageInfo();
    }
    IRequestInfo analyzedReq=helpers.analyzeRequest(messageInfo);
    URL uUrl=analyzedReq.getUrl();
    if (!loggerPreferences.isRestrictedToScope() || callbacks.isInScope(uUrl)) {
      boolean isValidTool=(loggerPreferences.isEnabled4All() || (loggerPreferences.isEnabled4Proxy() && toolFlag == callbacks.TOOL_PROXY) || (loggerPreferences.isEnabled4Intruder() && toolFlag == callbacks.TOOL_INTRUDER)|| (loggerPreferences.isEnabled4Repeater() && toolFlag == callbacks.TOOL_REPEATER)|| (loggerPreferences.isEnabled4Scanner() && toolFlag == callbacks.TOOL_SCANNER)|| (loggerPreferences.isEnabled4Sequencer() && toolFlag == callbacks.TOOL_SEQUENCER)|| (loggerPreferences.isEnabled4Spider() && toolFlag == callbacks.TOOL_SPIDER)|| (loggerPreferences.isEnabled4Extender() && toolFlag == callbacks.TOOL_EXTENDER)|| (loggerPreferences.isEnabled4TargetTab() && toolFlag == callbacks.TOOL_TARGET));
      if (isValidTool) {
        if (messageIsRequest && toolFlag == callbacks.TOOL_PROXY) {
        }
 else         if (!messageIsRequest) {
          LogEntry entry=new LogEntry(logTable.getModel(),toolFlag,messageIsRequest,callbacks.saveBuffersToTempFiles(messageInfo),uUrl,analyzedReq,message,logTable,loggerPreferences,stderr,stderr,isValidTool,callbacks);
          for (          ColorFilter colorFilter : colorFilters.values()) {
            entry.testColorFilter(colorFilter,false);
          }
          int v=(int)(tableScrollBar.getValue() + (tableScrollBar.getHeight() * 1.1));
          int m=tableScrollBar.getMaximum();
          boolean isAtBottom=v >= m;
synchronized (log) {
            int row=log.size();
            log.add(entry);
            logTable.getModel().fireTableRowsInserted(row,row);
          }
          if (isAtBottom)           tableScrollBar.setValue(tableScrollBar.getMaximum() + logTable.getRowHeight());
          if (loggerPreferences.getAutoSave()) {
            optionsJPanel.autoLogItem(entry);
          }
        }
      }
    }
  }
}

Fixed version (ground truth):
private void logIt(int toolFlag,boolean messageIsRequest,IHttpRequestResponse messageInfo,IInterceptedProxyMessage message){
  if (loggerPreferences.isEnabled()) {
    if (messageInfo == null && message != null) {
      messageInfo=message.getMessageInfo();
    }
    IRequestInfo analyzedReq=helpers.analyzeRequest(messageInfo);
    URL uUrl=analyzedReq.getUrl();
    if (!loggerPreferences.isRestrictedToScope() || callbacks.isInScope(uUrl)) {
      boolean isValidTool=(loggerPreferences.isEnabled4All() || (loggerPreferences.isEnabled4Proxy() && toolFlag == callbacks.TOOL_PROXY) || (loggerPreferences.isEnabled4Intruder() && toolFlag == callbacks.TOOL_INTRUDER)|| (loggerPreferences.isEnabled4Repeater() && toolFlag == callbacks.TOOL_REPEATER)|| (loggerPreferences.isEnabled4Scanner() && toolFlag == callbacks.TOOL_SCANNER)|| (loggerPreferences.isEnabled4Sequencer() && toolFlag == callbacks.TOOL_SEQUENCER)|| (loggerPreferences.isEnabled4Spider() && toolFlag == callbacks.TOOL_SPIDER)|| (loggerPreferences.isEnabled4Extender() && toolFlag == callbacks.TOOL_EXTENDER)|| (loggerPreferences.isEnabled4TargetTab() && toolFlag == callbacks.TOOL_TARGET));
      if (isValidTool) {
        if (messageIsRequest && toolFlag == callbacks.TOOL_PROXY) {
        }
 else         if (!messageIsRequest) {
          LogEntry entry=new LogEntry(logTable.getModel(),toolFlag,messageIsRequest,callbacks.saveBuffersToTempFiles(messageInfo),uUrl,analyzedReq,message,logTable,loggerPreferences,stderr,stderr,isValidTool,callbacks);
          for (          ColorFilter colorFilter : loggerPreferences.getColorFilters().values()) {
            entry.testColorFilter(colorFilter,false);
          }
          int v=(int)(tableScrollBar.getValue() + (tableScrollBar.getHeight() * 1.1));
          int m=tableScrollBar.getMaximum();
          boolean isAtBottom=v >= m;
synchronized (log) {
            int row=log.size();
            log.add(entry);
            logTable.getModel().fireTableRowsInserted(row,row);
          }
          if (isAtBottom)           tableScrollBar.setValue(tableScrollBar.getMaximum() + logTable.getRowHeight());
          if (loggerPreferences.getAutoSave()) {
            optionsJPanel.autoLogItem(entry);
          }
        }
      }
    }
  }
}