From 6904e747053de913a18191252a4d010787c2fa8f Mon Sep 17 00:00:00 2001
From: Thomas Wolf <a@a.com>
Date: Mon, 24 Jun 2019 08:13:05 +0200
Subject: [PATCH] Avoid NPE in FetchGerritChangePage
When getting the change refs from the Gerrit server fails the change
list may be null. Therefore add null checks where needed.
Bug: 548534
Change-Id: Ifc4d42f42ab016897430eb71c8831cfd979d47c4
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>---
.../egit/ui/internal/fetch/FetchGerritChangePage.java | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
---
.../ui/internal/fetch/FetchGerritChangePage.java | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchGerritChangePage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchGerritChangePage.java
index c3dee00..5ff9299 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchGerritChangePage.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/fetch/FetchGerritChangePage.java
@@ -766,14 +766,15 @@ private void checkPage() {
ChangeList list = changeRefs.get(uriCombo.getText());
if (list != null && list.isDone()) {
try {
+ Collection<Change> changes = list.get();
if (change.getPatchSetNumber() != null) {
- if (!list.get().contains(change)) {
+ if (changes == null || !changes.contains(change)) {
setErrorMessage(
UIText.FetchGerritChangePage_UnknownChangeRefMessage);
return;
}
} else {
- Change fromGerrit = findHighestPatchSet(list.get(),
+ Change fromGerrit = findHighestPatchSet(changes,
change.getChangeNumber().intValue());
if (fromGerrit == null) {
setErrorMessage(NLS.bind(
@@ -908,6 +909,9 @@ private void fillInPatchSet(Collection<Change> changes) {
private Change findHighestPatchSet(Collection<Change> changes,
int changeNumber) {
+ if (changes == null) {
+ return null;
+ }
// We know that the result is sorted by change and
// patch set number descending
for (Change fromGerrit : changes) {
@@ -1055,8 +1059,11 @@ private Change completeChange(Change originalChange,
if (monitor.isCanceled()) {
throw new OperationCanceledException();
}
- return findHighestPatchSet(changes,
+ Change highest = findHighestPatchSet(changes,
originalChange.getChangeNumber().intValue());
+ if (highest != null) {
+ return highest;
+ }
}
return originalChange;
}
--
2.20.1