ソースを参照

RevWalk: Do not close reader passed explicitly to constructor

The RevWalk(ObjectReader) constructor is explicitly to handle the case
where the caller is responsible for opening and closing the reader.
The reader should only be closed when it was created in the
RevWalk(Repository) constructor.

Change-Id: Ic0d595dc8d10de79e87549546c6c5ea2dc617e9b
tags/v4.0.0.201503231230-m1
Dave Borowitz 9年前
コミット
1e694f3847
1個のファイルの変更18行の追加7行の削除
  1. 18
    7
      org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalk.java

+ 18
- 7
org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalk.java ファイルの表示

@@ -166,6 +166,8 @@ public class RevWalk implements Iterable<RevCommit>, AutoCloseable {

final ObjectReader reader;

private final boolean closeReader;

final MutableObjectId idBuffer;

ObjectIdOwnerMap<RevObject> objects;
@@ -175,6 +177,7 @@ public class RevWalk implements Iterable<RevCommit>, AutoCloseable {
private int delayFreeFlags;

private int retainOnReset;

int carryFlags = UNINTERESTING;

final ArrayList<RevCommit> roots;
@@ -200,22 +203,27 @@ public class RevWalk implements Iterable<RevCommit>, AutoCloseable {
*
* @param repo
* the repository the walker will obtain data from. An
* ObjectReader will be created by the walker, and must be
* released by the caller.
* ObjectReader will be created by the walker, and will be closed
* when the walker is closed.
*/
public RevWalk(final Repository repo) {
this(repo.newObjectReader());
this(repo.newObjectReader(), true);
}

/**
* Create a new revision walker for a given repository.
* <p>
*
* @param or
* the reader the walker will obtain data from. The reader should
* be released by the caller when the walker is no longer
* required.
* the reader the walker will obtain data from. The reader is not
* closed when the walker is closed (but is closed by {@link
* #dispose()}.
*/
public RevWalk(ObjectReader or) {
this(or, false);
}

private RevWalk(ObjectReader or, boolean closeReader) {
reader = or;
idBuffer = new MutableObjectId();
objects = new ObjectIdOwnerMap<RevObject>();
@@ -226,6 +234,7 @@ public class RevWalk implements Iterable<RevCommit>, AutoCloseable {
filter = RevFilter.ALL;
treeFilter = TreeFilter.ALL;
retainBody = true;
this.closeReader = closeReader;
}

/** @return the reader this walker is using to load objects. */
@@ -254,7 +263,9 @@ public class RevWalk implements Iterable<RevCommit>, AutoCloseable {
*/
@Override
public void close() {
reader.close();
if (closeReader) {
reader.close();
}
}

/**

読み込み中…
キャンセル
保存