You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2011/11/15 20:31:22 UTC

svn commit: r1202392 - /lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java

Author: rmuir
Date: Tue Nov 15 19:31:21 2011
New Revision: 1202392

URL: http://svn.apache.org/viewvc?rev=1202392&view=rev
Log:
LUCENE-2621: die attributes die

Modified:
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java?rev=1202392&r1=1202391&r2=1202392&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java Tue Nov 15 19:31:21 2011
@@ -203,7 +203,7 @@ public abstract class TermVectorsWriter 
 
       final boolean positions;
 
-      final OffsetAttribute offsetAtt;
+      OffsetAttribute offsetAtt;
 
       final TermsEnum termsEnum = terms.iterator(null);
 
@@ -244,7 +244,16 @@ public abstract class TermVectorsWriter 
         startTerm(termsEnum.term(), freq);
 
         if (positions || offsetAtt != null) {
-          docsAndPositionsEnum = termsEnum.docsAndPositions(null, docsAndPositionsEnum);
+          DocsAndPositionsEnum dp = termsEnum.docsAndPositions(null, docsAndPositionsEnum);
+          // TODO: add startOffset()/endOffset() to d&pEnum... this is insanity
+          if (dp != docsAndPositionsEnum) {
+            // producer didnt reuse, must re-pull attributes
+            if (offsetAtt != null) {
+              assert dp.attributes().hasAttribute(OffsetAttribute.class);
+              offsetAtt = dp.attributes().getAttribute(OffsetAttribute.class);
+            }
+          }
+          docsAndPositionsEnum = dp;
           final int docID = docsAndPositionsEnum.nextDoc();
           assert docID != DocsEnum.NO_MORE_DOCS;
           assert docsAndPositionsEnum.freq() == freq;