QueryChanges: Skip adding _moreChanges when list is empty
ChangeJson can omit results if there is an exception during formating.
In this case, we omit the result from the output and can spare adding
_moreChanges as there are none. This prevents an
IndexOutOfBoundsException when the formatted list is empty.
Change-Id: I6665a4e1da3918312a27ef1be52ba5aad3dba568
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/QueryChanges.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/QueryChanges.java
index b288bd5..65de137 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/QueryChanges.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/QueryChanges.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.query.change;
import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
import com.google.gerrit.extensions.client.ListChangesOption;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -143,8 +144,8 @@
for (int n = 0; n < cnt; n++) {
List<ChangeInfo> info = res.get(n);
- if (results.get(n).more()) {
- info.get(info.size() - 1)._moreChanges = true;
+ if (results.get(n).more() && !info.isEmpty()) {
+ Iterables.getLast(info)._moreChanges = true;
}
}
return res;