Program: 44645
Project: 44645
Buggy source:
private static void notifyFailed(Context context,boolean isDownload,long threadId,boolean noisy){
  SharedPreferences sp=PreferenceManager.getDefaultSharedPreferences(context);
  boolean enabled=sp.getBoolean(MessagingPreferenceActivity.NOTIFICATION_ENABLED,true);
  if (!enabled) {
    return;
  }
  NotificationManager nm=(NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
  long[] msgThreadId={0};
  int totalFailedCount=getUndeliveredMessageCount(context,msgThreadId);
  Intent failedIntent;
  Notification notification=new Notification();
  String title;
  String description;
  if (totalFailedCount > 1) {
    description=context.getString(R.string.notification_failed_multiple,Integer.toString(totalFailedCount));
    title=context.getString(R.string.notification_failed_multiple_title);
    failedIntent=new Intent(context,ConversationList.class);
  }
 else {
    title=isDownload ? context.getString(R.string.message_download_failed_title) : context.getString(R.string.message_send_failed_title);
    description=context.getString(R.string.message_failed_body);
    threadId=(msgThreadId[0] != 0 ? msgThreadId[0] : 0);
    failedIntent=new Intent(context,ComposeMessageActivity.class);
    failedIntent.putExtra("String_Node_Str",threadId);
    failedIntent.putExtra("String_Node_Str",true);
  }
  failedIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
  PendingIntent pendingIntent=PendingIntent.getActivity(context,0,failedIntent,PendingIntent.FLAG_UPDATE_CURRENT);
  notification.icon=R.drawable.stat_notify_sms_failed;
  notification.tickerText=title;
  notification.setLatestEventInfo(context,title,description,pendingIntent);
  if (noisy) {
    boolean vibrate=sp.getBoolean(MessagingPreferenceActivity.NOTIFICATION_VIBRATE,true);
    if (vibrate) {
      notification.defaults|=Notification.DEFAULT_VIBRATE;
    }
    String ringtoneStr=sp.getString(MessagingPreferenceActivity.NOTIFICATION_RINGTONE,null);
    notification.sound=TextUtils.isEmpty(ringtoneStr) ? null : Uri.parse(ringtoneStr);
  }
  if (isDownload) {
    nm.notify(DOWNLOAD_FAILED_NOTIFICATION_ID,notification);
  }
 else {
    nm.notify(MESSAGE_FAILED_NOTIFICATION_ID,notification);
  }
}

Fixed version (ground truth):
private static void notifyFailed(Context context,boolean isDownload,long threadId,boolean noisy){
  SharedPreferences sp=PreferenceManager.getDefaultSharedPreferences(context);
  boolean enabled=sp.getBoolean(MessagingPreferenceActivity.NOTIFICATION_ENABLED,true);
  if (!enabled) {
    return;
  }
  NotificationManager nm=(NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
  long[] msgThreadId={0};
  int totalFailedCount=getUndeliveredMessageCount(context,msgThreadId);
  Intent failedIntent;
  Notification notification=new Notification();
  String title;
  String description;
  if (totalFailedCount > 1) {
    description=context.getString(R.string.notification_failed_multiple,Integer.toString(totalFailedCount));
    title=context.getString(R.string.notification_failed_multiple_title);
    failedIntent=new Intent(context,ConversationList.class);
  }
 else {
    title=isDownload ? context.getString(R.string.message_download_failed_title) : context.getString(R.string.message_send_failed_title);
    description=context.getString(R.string.message_failed_body);
    failedIntent=new Intent(context,ComposeMessageActivity.class);
    if (isDownload) {
      failedIntent.putExtra("String_Node_Str",true);
    }
 else {
      threadId=(msgThreadId[0] != 0 ? msgThreadId[0] : 0);
      failedIntent.putExtra("String_Node_Str",true);
    }
    failedIntent.putExtra("String_Node_Str",threadId);
  }
  failedIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
  PendingIntent pendingIntent=PendingIntent.getActivity(context,0,failedIntent,PendingIntent.FLAG_UPDATE_CURRENT);
  notification.icon=R.drawable.stat_notify_sms_failed;
  notification.tickerText=title;
  notification.setLatestEventInfo(context,title,description,pendingIntent);
  if (noisy) {
    boolean vibrate=sp.getBoolean(MessagingPreferenceActivity.NOTIFICATION_VIBRATE,true);
    if (vibrate) {
      notification.defaults|=Notification.DEFAULT_VIBRATE;
    }
    String ringtoneStr=sp.getString(MessagingPreferenceActivity.NOTIFICATION_RINGTONE,null);
    notification.sound=TextUtils.isEmpty(ringtoneStr) ? null : Uri.parse(ringtoneStr);
  }
  if (isDownload) {
    nm.notify(DOWNLOAD_FAILED_NOTIFICATION_ID,notification);
  }
 else {
    nm.notify(MESSAGE_FAILED_NOTIFICATION_ID,notification);
  }
}