Program: 180948
Project: 180948
Buggy source:
private synchronized void applyBtSettings(final BluetoothDevice device,int startId){
  if (device == null || mProfiles == null || mCheckedItems == null)   return;
synchronized (this) {
    for (    boolean enable : mCheckedItems) {
      if (enable) {
        int btState=mBtManager.getBluetoothState();
        if (DEBUG)         Log.d(TAG,"String_Node_Str" + btState);
        mBtManager.getBluetoothAdapter().enable();
switch (btState) {
case BluetoothAdapter.STATE_OFF:
case BluetoothAdapter.STATE_TURNING_OFF:
case BluetoothAdapter.STATE_TURNING_ON:
          if (mPendingDevice != null && mPendingDevice.equals(mDevice)) {
            return;
          }
        mPendingDevice=device;
      mPendingStartId=startId;
    if (btState != BluetoothAdapter.STATE_TURNING_ON) {
      setDisableBtSetting(true);
    }
  return;
}
}
}
}
mPendingDevice=null;
boolean callConnect=false;
CachedBluetoothDevice cachedDevice=getCachedBluetoothDevice(mContext,mBtManager,device);
for (int i=0; i < mProfiles.length; i++) {
LocalBluetoothProfileManager profileManager=LocalBluetoothProfileManager.getProfileManager(mBtManager,mProfiles[i]);
if (DEBUG) Log.d(TAG,mProfiles[i].toString() + "String_Node_Str" + mCheckedItems[i]);
if (mCheckedItems[i]) {
callConnect=true;
}
 else if (!mCheckedItems[i]) {
if (DEBUG) Log.d(TAG,"String_Node_Str");
cachedDevice.disconnect(mProfiles[i]);
}
profileManager.setPreferred(device,mCheckedItems[i]);
if (DEBUG) {
if (mCheckedItems[i] != profileManager.isPreferred(device)) {
Log.e(TAG,"String_Node_Str");
}
}
}
if (callConnect) {
if (DEBUG) Log.d(TAG,"String_Node_Str");
cachedDevice.connect();
}
}

Fixed version (ground truth):
private synchronized void applyBtSettings(final BluetoothDevice device,int startId){
  if (device == null || mProfiles == null || mCheckedItems == null)   return;
synchronized (this) {
    for (    boolean enable : mCheckedItems) {
      if (enable) {
        int btState=mBtManager.getBluetoothState();
        if (DEBUG)         Log.d(TAG,"String_Node_Str" + btState);
        mBtManager.getBluetoothAdapter().enable();
switch (btState) {
case BluetoothAdapter.STATE_OFF:
case BluetoothAdapter.STATE_TURNING_OFF:
case BluetoothAdapter.STATE_TURNING_ON:
          if (mPendingDevice != null && mPendingDevice.equals(mDevice)) {
            return;
          }
        mPendingDevice=device;
      mPendingStartId=startId;
    if (btState != BluetoothAdapter.STATE_TURNING_ON) {
      setSetting(SHARED_PREFERENCES_KEY_DISABLE_BT_WHEN_UNDOCKED,true);
    }
  return;
}
}
}
}
mPendingDevice=null;
boolean callConnect=false;
CachedBluetoothDevice cachedDevice=getCachedBluetoothDevice(mContext,mBtManager,device);
for (int i=0; i < mProfiles.length; i++) {
LocalBluetoothProfileManager profileManager=LocalBluetoothProfileManager.getProfileManager(mBtManager,mProfiles[i]);
if (DEBUG) Log.d(TAG,mProfiles[i].toString() + "String_Node_Str" + mCheckedItems[i]);
if (mCheckedItems[i]) {
callConnect=true;
}
 else if (!mCheckedItems[i]) {
if (DEBUG) Log.d(TAG,"String_Node_Str");
cachedDevice.disconnect(mProfiles[i]);
}
profileManager.setPreferred(device,mCheckedItems[i]);
if (DEBUG) {
if (mCheckedItems[i] != profileManager.isPreferred(device)) {
Log.e(TAG,"String_Node_Str");
}
}
}
if (callConnect) {
if (DEBUG) Log.d(TAG,"String_Node_Str");
cachedDevice.connect();
}
}