From 67caab5f749ade98d973f42cc85b3b822f9ef9b7 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Thu, 3 May 2012 15:31:41 -0700 Subject: [PATCH] Fix NPE in PRED__load_commit_labels_1 If a change query uses reviewer information and loads the approvals map, but there are no approvals for a given patch set available, the collection came out null, which cannot be iterated. Make it always be an empty list. Change-Id: I5fd156a854099c5d4ce3c5c0c494b5498c4ed252 --- .../com/google/gerrit/server/query/change/ChangeData.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeData.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeData.java index 1ea009cfcb..db3470e67d 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeData.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeData.java @@ -21,6 +21,7 @@ import com.google.gerrit.reviewdb.client.ChangeMessage; import com.google.gerrit.reviewdb.client.Patch; import com.google.gerrit.reviewdb.client.PatchLineComment; import com.google.gerrit.reviewdb.client.PatchSet; +import com.google.gerrit.reviewdb.client.PatchSet.Id; import com.google.gerrit.reviewdb.client.PatchSetApproval; import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.TrackingId; @@ -221,7 +222,12 @@ public class ChangeData { if (c == null) { currentApprovals = Collections.emptyList(); } else if (approvals != null) { - currentApprovals = approvalsMap(db).get(c.currentPatchSetId()); + Map> map = approvalsMap(db); + currentApprovals = map.get(c.currentPatchSetId()); + if (currentApprovals == null) { + currentApprovals = Collections.emptyList(); + map.put(c.currentPatchSetId(), currentApprovals); + } } else { currentApprovals = db.get().patchSetApprovals() .byPatchSet(c.currentPatchSetId()).toList();