Program: 80189
Project: 80189
Buggy source:
/** 
 * Creates a new <code>DiskHashtable</code> instance.
 * @param tc
 * @param template              An array of DataValueDescriptors that serves as a template for the rows.
 * @param key_column_numbers    The indexes of the key columns (0 based)
 * @param remove_duplicates     If true then rows with duplicate keys are removed.
 * @param keepAfterCommit       If true then the hash table is kept after a commit
 */
public DiskHashtable(TransactionController tc,DataValueDescriptor[] template,int[] collation_ids,int[] key_column_numbers,boolean remove_duplicates,boolean keepAfterCommit) throws StandardException {
  this.tc=tc;
  this.key_column_numbers=key_column_numbers;
  this.remove_duplicates=remove_duplicates;
  LanguageConnectionContext lcc=(LanguageConnectionContext)ContextService.getContextOrNull(LanguageConnectionContext.CONTEXT_ID);
  keepStatistics=(lcc != null) && lcc.getRunTimeStatisticsMode();
  row=new DataValueDescriptor[template.length];
  for (int i=0; i < row.length; i++) {
    row[i]=template[i].getNewNull();
    if (SanityManager.DEBUG) {
      SanityManager.ASSERT(row[i] != null,"String_Node_Str");
    }
  }
  int tempFlags=keepAfterCommit ? (TransactionController.IS_TEMPORARY | TransactionController.IS_KEPT) : TransactionController.IS_TEMPORARY;
  rowConglomerateId=tc.createConglomerate("String_Node_Str",template,(ColumnOrdering[])null,collation_ids,(Properties)null,tempFlags);
  rowConglomerate=tc.openConglomerate(rowConglomerateId,keepAfterCommit,TransactionController.OPENMODE_FORUPDATE,TransactionController.MODE_TABLE,TransactionController.ISOLATION_NOLOCK);
  btreeRow=new DataValueDescriptor[]{new SQLInteger(),rowConglomerate.newRowLocationTemplate()};
  Properties btreeProps=new Properties();
  btreeProps.put("String_Node_Str",String.valueOf(rowConglomerateId));
  btreeProps.put("String_Node_Str","String_Node_Str");
  btreeProps.put("String_Node_Str","String_Node_Str");
  btreeProps.put("String_Node_Str","String_Node_Str");
  btreeProps.put("String_Node_Str","String_Node_Str");
  btreeProps.put("String_Node_Str","String_Node_Str");
  int[] index_collation_ids={StringDataValue.COLLATION_TYPE_UCS_BASIC,StringDataValue.COLLATION_TYPE_UCS_BASIC};
  btreeConglomerateId=tc.createConglomerate("String_Node_Str",btreeRow,(ColumnOrdering[])null,index_collation_ids,btreeProps,tempFlags);
  btreeConglomerate=tc.openConglomerate(btreeConglomerateId,keepAfterCommit,TransactionController.OPENMODE_FORUPDATE,TransactionController.MODE_TABLE,TransactionController.ISOLATION_NOLOCK);
}

Fixed version (ground truth):
/** 
 * Creates a new <code>DiskHashtable</code> instance.
 * @param tc
 * @param template              An array of DataValueDescriptors that serves as a template for the rows.
 * @param key_column_numbers    The indexes of the key columns (0 based)
 * @param remove_duplicates     If true then rows with duplicate keys are removed.
 * @param keepAfterCommit       If true then the hash table is kept after a commit
 */
public DiskHashtable(TransactionController tc,DataValueDescriptor[] template,int[] collation_ids,int[] key_column_numbers,boolean remove_duplicates,boolean keepAfterCommit) throws StandardException {
  this.tc=tc;
  this.key_column_numbers=key_column_numbers;
  this.remove_duplicates=remove_duplicates;
  this.keepAfterCommit=keepAfterCommit;
  LanguageConnectionContext lcc=(LanguageConnectionContext)ContextService.getContextOrNull(LanguageConnectionContext.CONTEXT_ID);
  keepStatistics=(lcc != null) && lcc.getRunTimeStatisticsMode();
  row=new DataValueDescriptor[template.length];
  for (int i=0; i < row.length; i++) {
    row[i]=template[i].getNewNull();
    if (SanityManager.DEBUG) {
      SanityManager.ASSERT(row[i] != null,"String_Node_Str");
    }
  }
  int tempFlags=keepAfterCommit ? (TransactionController.IS_TEMPORARY | TransactionController.IS_KEPT) : TransactionController.IS_TEMPORARY;
  rowConglomerateId=tc.createConglomerate("String_Node_Str",template,(ColumnOrdering[])null,collation_ids,(Properties)null,tempFlags);
  rowConglomerate=tc.openConglomerate(rowConglomerateId,keepAfterCommit,TransactionController.OPENMODE_FORUPDATE,TransactionController.MODE_TABLE,TransactionController.ISOLATION_NOLOCK);
  btreeRow=new DataValueDescriptor[]{new SQLInteger(),rowConglomerate.newRowLocationTemplate()};
  Properties btreeProps=new Properties();
  btreeProps.put("String_Node_Str",String.valueOf(rowConglomerateId));
  btreeProps.put("String_Node_Str","String_Node_Str");
  btreeProps.put("String_Node_Str","String_Node_Str");
  btreeProps.put("String_Node_Str","String_Node_Str");
  btreeProps.put("String_Node_Str","String_Node_Str");
  btreeProps.put("String_Node_Str","String_Node_Str");
  int[] index_collation_ids={StringDataValue.COLLATION_TYPE_UCS_BASIC,StringDataValue.COLLATION_TYPE_UCS_BASIC};
  btreeConglomerateId=tc.createConglomerate("String_Node_Str",btreeRow,(ColumnOrdering[])null,index_collation_ids,btreeProps,tempFlags);
  btreeConglomerate=tc.openConglomerate(btreeConglomerateId,keepAfterCommit,TransactionController.OPENMODE_FORUPDATE,TransactionController.MODE_TABLE,TransactionController.ISOLATION_NOLOCK);
}