Skip to content

Commit f0662bb

Browse files
cmodi-metafacebook-github-bot
authored andcommitted
Fix out of OOB error for ConversationHistory (#5770)
Summary: When user clears chat history and then give a prompt, there is a OOB error. This occurs since `getRecentSavedTextMessages()` didn't check for an empty Message Arraylist. Pull Request resolved: #5770 Reviewed By: Riandy Differential Revision: D63659827 Pulled By: cmodi-meta fbshipit-source-id: 1e3157a8f1c17cb1e4b94f9ff7287b53a2b4f2af
1 parent e186bc9 commit f0662bb

File tree

1 file changed

+21
-17
lines changed
  • examples/demo-apps/android/LlamaDemo/app/src/main/java/com/example/executorchllamademo

1 file changed

+21
-17
lines changed

examples/demo-apps/android/LlamaDemo/app/src/main/java/com/example/executorchllamademo/MessageAdapter.java

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -95,28 +95,32 @@ public ArrayList<Message> getSavedMessages() {
9595
public ArrayList<Message> getRecentSavedTextMessages(int numOfLatestPromptMessages) {
9696
ArrayList<Message> recentMessages = new ArrayList<Message>();
9797
int lastIndex = savedMessages.size() - 1;
98-
Message messageToAdd = savedMessages.get(lastIndex);
99-
int oldPromptID = messageToAdd.getPromptID();
100-
101-
for (int i = 0; i < savedMessages.size(); i++) {
102-
messageToAdd = savedMessages.get(lastIndex - i);
103-
if (messageToAdd.getMessageType() != MessageType.SYSTEM) {
104-
if (messageToAdd.getPromptID() != oldPromptID) {
105-
numOfLatestPromptMessages--;
106-
oldPromptID = messageToAdd.getPromptID();
107-
}
108-
if (numOfLatestPromptMessages > 0) {
109-
if (messageToAdd.getMessageType() == MessageType.TEXT) {
110-
recentMessages.add(messageToAdd);
98+
// In most cases lastIndex >=0 .
99+
// A situation where the user clears chat history and enters prompt. Causes lastIndex=-1 .
100+
if (lastIndex >= 0) {
101+
Message messageToAdd = savedMessages.get(lastIndex);
102+
int oldPromptID = messageToAdd.getPromptID();
103+
104+
for (int i = 0; i < savedMessages.size(); i++) {
105+
messageToAdd = savedMessages.get(lastIndex - i);
106+
if (messageToAdd.getMessageType() != MessageType.SYSTEM) {
107+
if (messageToAdd.getPromptID() != oldPromptID) {
108+
numOfLatestPromptMessages--;
109+
oldPromptID = messageToAdd.getPromptID();
110+
}
111+
if (numOfLatestPromptMessages > 0) {
112+
if (messageToAdd.getMessageType() == MessageType.TEXT) {
113+
recentMessages.add(messageToAdd);
114+
}
115+
} else {
116+
break;
111117
}
112-
} else {
113-
break;
114118
}
115119
}
120+
// To place the order in [input1, output1, input2, output2...]
121+
Collections.reverse(recentMessages);
116122
}
117123

118-
// To place the order in [input1, output1, input2, output2...]
119-
Collections.reverse(recentMessages);
120124
return recentMessages;
121125
}
122126

0 commit comments

Comments
 (0)