Program: 20159
Project: 20159
Buggy source:
@Override public WeatherForecast getForecastWeather(String data) throws WeatherLibException {
  WeatherForecast forecast=new WeatherForecast();
  try {
    XmlPullParser parser=XmlPullParserFactory.newInstance().newPullParser();
    parser.setInput(new StringReader(data));
    String tagName=null;
    String currentTag=null;
    int event=parser.getEventType();
    boolean isFirstDayForecast=true;
    while (event != XmlPullParser.END_DOCUMENT) {
      tagName=parser.getName();
      if (event == XmlPullParser.START_TAG) {
        if (tagName.equals("String_Node_Str")) {
          DayForecast df=new DayForecast();
          df.forecastTemp.max=Integer.parseInt(parser.getAttributeValue(null,"String_Node_Str"));
          df.forecastTemp.min=Integer.parseInt(parser.getAttributeValue(null,"String_Node_Str"));
          df.weather.currentCondition.setWeatherId(Integer.parseInt(parser.getAttributeValue(null,"String_Node_Str")));
          if (codeProvider != null)           df.weather.currentCondition.setWeatherCode(codeProvider.getWeatherCode(String.valueOf(df.weather.currentCondition.getWeatherId())));
          df.weather.currentCondition.setCondition(parser.getAttributeValue(null,"String_Node_Str"));
          df.weather.currentCondition.setIcon("String_Node_Str" + df.weather.currentCondition.getWeatherId());
          forecast.addForecast(df);
        }
 else         if (tagName.equals("String_Node_Str")) {
          units.tempUnit="String_Node_Str" + parser.getAttributeValue(null,"String_Node_Str");
          units.pressureUnit=parser.getAttributeValue(null,"String_Node_Str");
          units.distanceUnit=parser.getAttributeValue(null,"String_Node_Str");
          units.speedUnit=parser.getAttributeValue(null,"String_Node_Str");
          forecast.setUnit(units);
        }
      }
 else       if (event == XmlPullParser.END_TAG) {
        if ("String_Node_Str".equals(currentTag)) {
          currentTag=null;
        }
      }
      event=parser.next();
    }
  }
 catch (  Throwable t) {
    t.printStackTrace();
    throw new WeatherLibException(t);
  }
  return forecast;
}

Fixed version (ground truth):
@Override public WeatherForecast getForecastWeather(String data) throws WeatherLibException {
  WeatherForecast forecast=new WeatherForecast();
  try {
    XmlPullParser parser=XmlPullParserFactory.newInstance().newPullParser();
    parser.setInput(new StringReader(data));
    String tagName=null;
    String currentTag=null;
    int event=parser.getEventType();
    boolean isFirstDayForecast=true;
    while (event != XmlPullParser.END_DOCUMENT) {
      tagName=parser.getName();
      if (event == XmlPullParser.START_TAG) {
        if (tagName.equals("String_Node_Str")) {
          DayForecast df=new DayForecast();
          df.forecastTemp.max=Integer.parseInt(parser.getAttributeValue(null,"String_Node_Str"));
          df.forecastTemp.min=Integer.parseInt(parser.getAttributeValue(null,"String_Node_Str"));
          df.weather.currentCondition.setWeatherId(Integer.parseInt(parser.getAttributeValue(null,"String_Node_Str")));
          if (codeProvider != null) {
            try {
              df.weather.currentCondition.setWeatherCode(codeProvider.getWeatherCode(String.valueOf(df.weather.currentCondition.getWeatherId())));
            }
 catch (            Throwable t) {
              df.weather.currentCondition.setWeatherCode(WeatherCode.NOT_AVAILABLE);
            }
          }
          df.weather.currentCondition.setCondition(parser.getAttributeValue(null,"String_Node_Str"));
          df.weather.currentCondition.setIcon("String_Node_Str" + df.weather.currentCondition.getWeatherId());
          forecast.addForecast(df);
        }
 else         if (tagName.equals("String_Node_Str")) {
          units.tempUnit="String_Node_Str" + parser.getAttributeValue(null,"String_Node_Str");
          units.pressureUnit=parser.getAttributeValue(null,"String_Node_Str");
          units.distanceUnit=parser.getAttributeValue(null,"String_Node_Str");
          units.speedUnit=parser.getAttributeValue(null,"String_Node_Str");
          forecast.setUnit(units);
        }
      }
 else       if (event == XmlPullParser.END_TAG) {
        if ("String_Node_Str".equals(currentTag)) {
          currentTag=null;
        }
      }
      event=parser.next();
    }
  }
 catch (  Throwable t) {
    t.printStackTrace();
    throw new WeatherLibException(t);
  }
  return forecast;
}