Program: 171947
Project: 171947
Buggy source:
private AVIMConversation parseConversationFromCursor(Cursor cursor){
  String conversationId=cursor.getString(cursor.getColumnIndex(COLUMN_CONVERSATION_ID));
  String createdAt=cursor.getString(cursor.getColumnIndex(COLUMN_CREATEDAT));
  String updatedAt=cursor.getString(cursor.getColumnIndex(COLUMN_UPDATEDAT));
  String membersStr=cursor.getString(cursor.getColumnIndex(COLUMN_MEMBERS));
  String attrsStr=cursor.getString(cursor.getColumnIndex(COLUMN_ATTRIBUTE));
  String instanceData=cursor.getString(cursor.getColumnIndex(COLUMN_INSTANCEDATA));
  String creator=cursor.getString(cursor.getColumnIndex(COLUMN_CREATOR));
  long lastMessageTS=cursor.getLong(cursor.getColumnIndex(COLUMN_LM));
  int transientValue=cursor.getInt(cursor.getColumnIndex(COLUMN_TRANSIENT));
  int unreadCount=cursor.getInt(cursor.getColumnIndex(COLUMN_UNREAD_COUNT));
  int mentioned=cursor.getInt(cursor.getColumnIndex(COLUMN_CONV_MENTIONED));
  long readAt=cursor.getLong(cursor.getColumnIndex(COLUMN_CONVERSATION_READAT));
  long deliveredAt=cursor.getLong(cursor.getColumnIndex(COLUMN_CONVRESATION_DELIVEREDAT));
  String lastMessage=cursor.getString(cursor.getColumnIndex(COLUMN_LASTMESSAGE));
  int lastMessageInnerType=cursor.getInt(cursor.getColumnIndex(COLUMN_CONV_LASTMESSAGE_INNERTYPE));
  AVIMConversation conversation=new AVIMConversation(AVIMClient.getInstance(clientId),conversationId);
  conversation.createdAt=createdAt;
  conversation.updatedAt=updatedAt;
  try {
    conversation.members.clear();
    if (!AVUtils.isBlankContent(membersStr)) {
      conversation.members.addAll(JSON.parseObject(membersStr,Set.class));
    }
    conversation.attributes.clear();
    if (!AVUtils.isBlankContent(attrsStr)) {
      conversation.attributes.putAll(JSON.parseObject(attrsStr,HashMap.class));
    }
    conversation.instanceData.clear();
    if (!AVUtils.isBlankContent(instanceData)) {
      conversation.instanceData.putAll(JSON.parseObject(instanceData,HashMap.class));
    }
    AVIMMessage msg=JSON.parseObject(lastMessage,AVIMMessage.class);
    if (lastMessageInnerType != MESSAGE_INNERTYPE_BIN) {
      conversation.lastMessage=msg;
    }
 else {
      AVIMBinaryMessage binaryMsg=AVIMBinaryMessage.createInstanceFromMessage(msg);
      binaryMsg.setBytes(AVUtils.Base64Decode(lastMessage));
      conversation.lastMessage=binaryMsg;
    }
  }
 catch (  Exception e) {
    if (AVOSCloud.isDebugLogEnabled()) {
      LogUtil.avlog.e("String_Node_Str" + e.getMessage());
    }
  }
  conversation.creator=creator;
  conversation.lastMessageAt=new Date(lastMessageTS);
  conversation.isTransient=transientValue == 1;
  conversation.unreadMessagesCount=unreadCount;
  conversation.unreadMessagesMentioned=mentioned == 1;
  conversation.lastReadAt=readAt;
  conversation.lastDeliveredAt=deliveredAt;
  return conversation;
}

Fixed version (ground truth):
private AVIMConversation parseConversationFromCursor(Cursor cursor){
  String conversationId=cursor.getString(cursor.getColumnIndex(COLUMN_CONVERSATION_ID));
  String createdAt=cursor.getString(cursor.getColumnIndex(COLUMN_CREATEDAT));
  String updatedAt=cursor.getString(cursor.getColumnIndex(COLUMN_UPDATEDAT));
  String membersStr=cursor.getString(cursor.getColumnIndex(COLUMN_MEMBERS));
  String attrsStr=cursor.getString(cursor.getColumnIndex(COLUMN_ATTRIBUTE));
  String instanceData=cursor.getString(cursor.getColumnIndex(COLUMN_INSTANCEDATA));
  String creator=cursor.getString(cursor.getColumnIndex(COLUMN_CREATOR));
  long lastMessageTS=cursor.getLong(cursor.getColumnIndex(COLUMN_LM));
  int transientValue=cursor.getInt(cursor.getColumnIndex(COLUMN_TRANSIENT));
  int unreadCount=cursor.getInt(cursor.getColumnIndex(COLUMN_UNREAD_COUNT));
  int mentioned=cursor.getInt(cursor.getColumnIndex(COLUMN_CONV_MENTIONED));
  long readAt=cursor.getLong(cursor.getColumnIndex(COLUMN_CONVERSATION_READAT));
  long deliveredAt=cursor.getLong(cursor.getColumnIndex(COLUMN_CONVRESATION_DELIVEREDAT));
  String lastMessage=cursor.getString(cursor.getColumnIndex(COLUMN_LASTMESSAGE));
  int lastMessageInnerType=cursor.getInt(cursor.getColumnIndex(COLUMN_CONV_LASTMESSAGE_INNERTYPE));
  AVIMConversation conversation=new AVIMConversation(AVIMClient.getInstance(clientId),conversationId);
  conversation.createdAt=createdAt;
  conversation.updatedAt=updatedAt;
  try {
    conversation.members.clear();
    if (!AVUtils.isBlankContent(membersStr)) {
      conversation.members.addAll(JSON.parseObject(membersStr,Set.class));
    }
    conversation.attributes.clear();
    if (!AVUtils.isBlankContent(attrsStr)) {
      conversation.attributes.putAll(JSON.parseObject(attrsStr,HashMap.class));
    }
    conversation.instanceData.clear();
    if (!AVUtils.isBlankContent(instanceData)) {
      conversation.instanceData.putAll(JSON.parseObject(instanceData,HashMap.class));
    }
    AVIMMessage msg=JSON.parseObject(lastMessage,AVIMMessage.class);
    if (lastMessageInnerType != MESSAGE_INNERTYPE_BIN) {
      conversation.lastMessage=msg;
    }
 else {
      AVIMBinaryMessage binaryMsg=AVIMBinaryMessage.createInstanceFromMessage(msg);
      binaryMsg.setBytes(AVUtils.base64Decode(lastMessage));
      conversation.lastMessage=binaryMsg;
    }
  }
 catch (  Exception e) {
    if (AVOSCloud.isDebugLogEnabled()) {
      LogUtil.avlog.e("String_Node_Str" + e.getMessage());
    }
  }
  conversation.creator=creator;
  conversation.lastMessageAt=new Date(lastMessageTS);
  conversation.isTransient=transientValue == 1;
  conversation.unreadMessagesCount=unreadCount;
  conversation.unreadMessagesMentioned=mentioned == 1;
  conversation.lastReadAt=readAt;
  conversation.lastDeliveredAt=deliveredAt;
  return conversation;
}