Browse Source

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>
stable-4.1
Andrey Loskutov 10 years ago committed by Matthias Sohn
parent
commit
4d565f0b5f
  1. 5
      org.eclipse.jgit/src/org/eclipse/jgit/api/StashDropCommand.java
  2. 12
      org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java

5
org.eclipse.jgit/src/org/eclipse/jgit/api/StashDropCommand.java

@ -52,6 +52,7 @@ import java.util.List;
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 class StashDropCommand extends GitCommand<ObjectId> {
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);

12
org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java

@ -751,8 +751,11 @@ public abstract class Repository implements AutoCloseable {
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 @@ public abstract class Repository implements AutoCloseable {
}
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(

Loading…
Cancel
Save