Guard agains null ReflogReader if named ref does not exist

Follow up on egit bug 466973.

Change-Id: Idd83d87803e86b25f106dfd725214b5a3ec5171c
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
This commit is contained in:
Andrey Loskutov 2015-05-24 09:15:15 +02:00 committed by Matthias Sohn
parent 7ce6abe858
commit 4d565f0b5f
2 changed files with 15 additions and 2 deletions

View File

@ -52,6 +52,7 @@
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.api.errors.InvalidRefNameException;
import org.eclipse.jgit.api.errors.JGitInternalException;
import org.eclipse.jgit.api.errors.RefNotFoundException;
import org.eclipse.jgit.errors.LockFailedException;
import org.eclipse.jgit.internal.JGitText;
import org.eclipse.jgit.internal.storage.file.ReflogWriter;
@ -184,6 +185,10 @@ public ObjectId call() throws GitAPIException {
List<ReflogEntry> entries;
try {
ReflogReader reader = repo.getReflogReader(R_STASH);
if (reader == null) {
throw new RefNotFoundException(MessageFormat
.format(JGitText.get().refNotResolved, stashRef));
}
entries = reader.getReverseEntries();
} catch (IOException e) {
throw new JGitInternalException(JGitText.get().stashDropFailed, e);

View File

@ -751,8 +751,11 @@ && isAllHex(revstr, dashg + 4)) {
private String resolveReflogCheckout(int checkoutNo)
throws IOException {
List<ReflogEntry> reflogEntries = getReflogReader(Constants.HEAD)
.getReverseEntries();
ReflogReader reader = getReflogReader(Constants.HEAD);
if (reader == null) {
return null;
}
List<ReflogEntry> reflogEntries = reader.getReverseEntries();
for (ReflogEntry entry : reflogEntries) {
CheckoutEntry checkout = entry.parseCheckout();
if (checkout != null)
@ -773,6 +776,11 @@ private RevCommit resolveReflog(RevWalk rw, Ref ref, String time)
}
assert number >= 0;
ReflogReader reader = getReflogReader(ref.getName());
if (reader == null) {
throw new RevisionSyntaxException(
MessageFormat.format(JGitText.get().reflogEntryNotFound,
Integer.valueOf(number), ref.getName()));
}
ReflogEntry entry = reader.getReverseEntry(number);
if (entry == null)
throw new RevisionSyntaxException(MessageFormat.format(