NPE when using "not" filter, closes #953.

This commit is contained in:
kimchy 2011-05-20 22:16:43 +03:00
parent 811f14465a
commit 9a536b2c2b
2 changed files with 13 additions and 12 deletions

View File

@ -53,13 +53,13 @@ public class AllDocSet extends DocSet {
return new AllDocIdSetIterator(maxDoc);
}
private final class AllDocIdSetIterator extends DocIdSetIterator {
public static final class AllDocIdSetIterator extends DocIdSetIterator {
private final int maxDoc;
private int doc = -1;
private AllDocIdSetIterator(int maxDoc) {
public AllDocIdSetIterator(int maxDoc) {
this.maxDoc = maxDoc;
}

View File

@ -46,21 +46,22 @@ public class NotDocIdSet extends DocIdSet {
}
@Override public DocIdSetIterator iterator() throws IOException {
return new NotDocIdSetIterator();
DocIdSetIterator it = set.iterator();
if (it == null) {
return new AllDocSet.AllDocIdSetIterator(max);
}
return new NotDocIdSetIterator(max, it);
}
class NotDocIdSetIterator extends DocIdSetIterator {
public static class NotDocIdSetIterator extends DocIdSetIterator {
private final int max;
private DocIdSetIterator it1;
int lastReturn = -1;
private DocIdSetIterator it1 = null;
private int innerDocid = -1;
NotDocIdSetIterator() throws IOException {
initialize();
}
private void initialize() throws IOException {
it1 = set.iterator();
NotDocIdSetIterator(int max, DocIdSetIterator it) throws IOException {
this.max = max;
this.it1 = it;
if ((innerDocid = it1.nextDoc()) == DocIdSetIterator.NO_MORE_DOCS) it1 = null;
}