Program: 11459
Project: 11459
Buggy source:
private void computeTileInOneSwathFloat(final int tx0,final int ty0,final int txMax,final int tyMax,final int firstSubSwathIndex,final Rectangle[] sourceRectangle,final String tgtBandName,final Tile tgtTile){
  final int yMin=computeYMin(subSwath[firstSubSwathIndex]);
  final int yMax=computeYMax(subSwath[firstSubSwathIndex]);
  final int xMin=computeXMin(subSwath[firstSubSwathIndex]);
  final int xMax=computeXMax(subSwath[firstSubSwathIndex]);
  final int firstY=Math.max(ty0,yMin);
  final int lastY=Math.min(tyMax,yMax + 1);
  final int firstX=Math.max(tx0,xMin);
  final int lastX=Math.min(txMax,xMax + 1);
  if (firstY >= lastY || firstX >= lastX) {
    return;
  }
  final String swathIndexStr=String.valueOf(getSubSwathIndex(subSwath[firstSubSwathIndex].subSwathName));
  final Band srcBand=getSourceBandFromTargetBandName(tgtBandName,acquisitionMode,swathIndexStr);
  final Tile srcRaster=getSourceTile(srcBand,sourceRectangle[0]);
  final TileIndex srcTileIndex=new TileIndex(srcRaster);
  final TileIndex tgtIndex=new TileIndex(tgtTile);
  final float[] srcArray=(float[])srcRaster.getDataBuffer().getElems();
  final float[] tgtArray=(float[])tgtTile.getDataBuffer().getElems();
  for (int y=firstY; y < lastY; y++) {
    final int sy0=getLineIndexInSourceProduct(y,subSwath[firstSubSwathIndex]);
    final int tgtOffset=tgtIndex.calculateStride(y);
    final Sentinel1Utils.SubSwathInfo firstSubSwath=subSwath[firstSubSwathIndex];
    int offset=srcTileIndex.calculateStride(sy0);
    final int sx0=(int)Math.round(((targetSlantRangeTimeToFirstPixel + firstX * targetDeltaSlantRangeTime) - firstSubSwath.slrTimeToFirstValidPixel) / targetDeltaSlantRangeTime);
    System.arraycopy(srcArray,sx0 - offset,tgtArray,firstX - tgtOffset,lastX - firstX);
  }
}

Fixed version (ground truth):
private void computeTileInOneSwathFloat(final int tx0,final int ty0,final int txMax,final int tyMax,final int firstSubSwathIndex,final Rectangle[] sourceRectangle,final String tgtBandName,final Tile tgtTile){
  final int yMin=computeYMin(subSwath[firstSubSwathIndex]);
  final int yMax=computeYMax(subSwath[firstSubSwathIndex]);
  final int xMin=computeXMin(subSwath[firstSubSwathIndex]);
  final int xMax=computeXMax(subSwath[firstSubSwathIndex]);
  final int firstY=Math.max(ty0,yMin);
  final int lastY=Math.min(tyMax,yMax + 1);
  final int firstX=Math.max(tx0,xMin);
  final int lastX=Math.min(txMax,xMax + 1);
  if (firstY >= lastY || firstX >= lastX) {
    return;
  }
  final String swathIndexStr=String.valueOf(getSubSwathIndex(subSwath[firstSubSwathIndex].subSwathName));
  final Band srcBand=getSourceBandFromTargetBandName(tgtBandName,acquisitionMode,swathIndexStr);
  final Tile srcRaster=getSourceTile(srcBand,sourceRectangle[0]);
  final TileIndex srcTileIndex=new TileIndex(srcRaster);
  final TileIndex tgtIndex=new TileIndex(tgtTile);
  final float[] srcArray=(float[])srcRaster.getDataBuffer().getElems();
  final float[] tgtArray=(float[])tgtTile.getDataBuffer().getElems();
  for (int y=firstY; y < lastY; y++) {
    final int sy0=getLineIndexInSourceProduct(y,subSwath[firstSubSwathIndex]);
    final int tgtOffset=tgtIndex.calculateStride(y);
    final Sentinel1Utils.SubSwathInfo firstSubSwath=subSwath[firstSubSwathIndex];
    int offset=srcTileIndex.calculateStride(sy0);
    final int sx0=(int)Math.round(((targetSlantRangeTimeToFirstPixel + firstX * targetDeltaSlantRangeTime) - firstSubSwath.slrTimeToFirstPixel) / targetDeltaSlantRangeTime);
    System.arraycopy(srcArray,sx0 - offset,tgtArray,firstX - tgtOffset,lastX - firstX);
  }
}