Program: 183466
Project: 183466
Buggy source:
private final void updateBattery(Intent intent){
  mBatteryData.iconId=intent.getIntExtra("String_Node_Str",0);
  mBatteryData.iconLevel=intent.getIntExtra("String_Node_Str",0);
  mService.updateIcon(mBatteryIcon,mBatteryData,null);
  int plugged=intent.getIntExtra("String_Node_Str",0);
  int level=intent.getIntExtra("String_Node_Str",-1);
  if (false) {
    Log.d(TAG,"String_Node_Str" + level + "String_Node_Str"+ plugged+ "String_Node_Str"+ mBatteryPlugged+ "String_Node_Str"+ mBatteryLevel+ "String_Node_Str"+ mBatteryThreshold+ "String_Node_Str"+ mBatteryFirst);
  }
  int oldPlugged=mBatteryPlugged;
  int oldThreshold=mBatteryThreshold;
  pickNextBatteryLevel(level);
  mBatteryPlugged=plugged;
  mBatteryLevel=level;
  if (mBatteryFirst) {
    mBatteryFirst=false;
  }
  if (false) {
    Log.d(TAG,"String_Node_Str" + plugged + "String_Node_Str"+ oldPlugged+ "String_Node_Str"+ level+ "String_Node_Str"+ mBatteryThreshold+ "String_Node_Str"+ oldThreshold);
  }
  if (plugged == 0 && ((oldPlugged != 0 && level < mBatteryThresholds[BATTERY_THRESHOLD_WARNING]) || (mBatteryThreshold > oldThreshold && mBatteryThreshold > BATTERY_THRESHOLD_WARNING))) {
    mSentLowBatteryBroadcast=true;
    mContext.sendBroadcast(new Intent(Intent.ACTION_BATTERY_LOW));
    if (SHOW_LOW_BATTERY_WARNING) {
      if (false) {
        Log.d(TAG,"String_Node_Str" + mPhoneState + "String_Node_Str"+ mLowBatteryDialog+ "String_Node_Str"+ mBatteryShowLowOnEndCall);
      }
      if (mPhoneState == TelephonyManager.CALL_STATE_IDLE) {
        showLowBatteryWarning();
      }
 else {
        mBatteryShowLowOnEndCall=true;
      }
    }
  }
 else   if (mBatteryThreshold < BATTERY_THRESHOLD_WARNING) {
    if (mSentLowBatteryBroadcast == true) {
      mSentLowBatteryBroadcast=false;
      mContext.sendBroadcast(new Intent(Intent.ACTION_BATTERY_OKAY));
    }
    if (SHOW_LOW_BATTERY_WARNING) {
      if (mLowBatteryDialog != null) {
        mLowBatteryDialog.dismiss();
        mBatteryShowLowOnEndCall=false;
      }
    }
  }
}

Fixed version (ground truth):
private final void updateBattery(Intent intent){
  mBatteryData.iconId=intent.getIntExtra("String_Node_Str",0);
  mBatteryData.iconLevel=intent.getIntExtra("String_Node_Str",0);
  mService.updateIcon(mBatteryIcon,mBatteryData,null);
  int plugged=intent.getIntExtra("String_Node_Str",0);
  int level=intent.getIntExtra("String_Node_Str",-1);
  if (false) {
    Log.d(TAG,"String_Node_Str" + level + "String_Node_Str"+ plugged+ "String_Node_Str"+ mBatteryPlugged+ "String_Node_Str"+ mBatteryLevel+ "String_Node_Str"+ mBatteryThreshold+ "String_Node_Str"+ mBatteryFirst);
  }
  int oldPlugged=mBatteryPlugged;
  int oldThreshold=mBatteryThreshold;
  pickNextBatteryLevel(level);
  mBatteryPlugged=plugged;
  mBatteryLevel=level;
  if (mBatteryFirst) {
    mBatteryFirst=false;
  }
  if (false) {
    Log.d(TAG,"String_Node_Str" + plugged + "String_Node_Str"+ oldPlugged+ "String_Node_Str"+ level+ "String_Node_Str"+ mBatteryThreshold+ "String_Node_Str"+ oldThreshold);
  }
  if (plugged == 0 && ((oldPlugged != 0 && level < mBatteryThresholds[BATTERY_THRESHOLD_WARNING]) || (mBatteryThreshold > oldThreshold && mBatteryThreshold > BATTERY_THRESHOLD_WARNING))) {
    mSentLowBatteryBroadcast=true;
    Intent batIntent=new Intent(Intent.ACTION_BATTERY_LOW);
    batIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
    mContext.sendBroadcast(batIntent);
    if (SHOW_LOW_BATTERY_WARNING) {
      if (false) {
        Log.d(TAG,"String_Node_Str" + mPhoneState + "String_Node_Str"+ mLowBatteryDialog+ "String_Node_Str"+ mBatteryShowLowOnEndCall);
      }
      if (mPhoneState == TelephonyManager.CALL_STATE_IDLE) {
        showLowBatteryWarning();
      }
 else {
        mBatteryShowLowOnEndCall=true;
      }
    }
  }
 else   if (mBatteryThreshold < BATTERY_THRESHOLD_WARNING) {
    if (mSentLowBatteryBroadcast == true) {
      mSentLowBatteryBroadcast=false;
      Intent batIntent=new Intent(Intent.ACTION_BATTERY_OKAY);
      batIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
      mContext.sendBroadcast(batIntent);
    }
    if (SHOW_LOW_BATTERY_WARNING) {
      if (mLowBatteryDialog != null) {
        mLowBatteryDialog.dismiss();
        mBatteryShowLowOnEndCall=false;
      }
    }
  }
}