Index: lucene/src/java/org/apache/lucene/util/FixedBitSet.java =================================================================== --- lucene/src/java/org/apache/lucene/util/FixedBitSet.java (revision 1204413) +++ lucene/src/java/org/apache/lucene/util/FixedBitSet.java (working copy) @@ -192,6 +192,9 @@ if (iter instanceof OpenBitSetIterator && iter.docID() == -1) { final OpenBitSetIterator obs = (OpenBitSetIterator) iter; or(obs.arr, obs.words); + // advance after last doc that would be accepted if standard + // iteration is used (to exhaust it): + obs.advance(numBits); } else { int doc; while ((doc = iter.nextDoc()) < numBits) { @@ -219,6 +222,9 @@ if (iter instanceof OpenBitSetIterator && iter.docID() == -1) { final OpenBitSetIterator obs = (OpenBitSetIterator) iter; and(obs.arr, obs.words); + // advance after last doc that would be accepted if standard + // iteration is used (to exhaust it): + obs.advance(numBits); } else { if (numBits == 0) return; int disiDoc, bitSetDoc = nextSetBit(0); @@ -255,6 +261,9 @@ if (iter instanceof OpenBitSetIterator && iter.docID() == -1) { final OpenBitSetIterator obs = (OpenBitSetIterator) iter; andNot(obs.arr, obs.words); + // advance after last doc that would be accepted if standard + // iteration is used (to exhaust it): + obs.advance(numBits); } else { int doc; while ((doc = iter.nextDoc()) < numBits) {