You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ni...@apache.org on 2021/11/18 18:09:41 UTC

[lucenenet] branch master updated: BUG: Modified all TermsEnum.MoveNext() methods to return a check for null term rather than simply returning true, which is invalid if the term is null

This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucenenet.git


The following commit(s) were added to refs/heads/master by this push:
     new dc4958f  BUG: Modified all TermsEnum.MoveNext() methods to return a check for null term rather than simply returning true, which is invalid if the term is null
dc4958f is described below

commit dc4958f06199a1185c847c7530cb6921eda62309
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Sat Nov 13 16:38:23 2021 +0700

    BUG: Modified all TermsEnum.MoveNext() methods to return a check for null term rather than simply returning true, which is invalid if the term is null
---
 .../BlockTerms/BlockTermsReader.cs                 |  2 +-
 .../Bloom/BloomFilteringPostingsFormat.cs          | 24 +++++++++++-----------
 src/Lucene.Net.Codecs/Memory/FSTOrdTermsReader.cs  |  6 +++---
 src/Lucene.Net.Codecs/Memory/FSTTermsReader.cs     |  6 +++---
 .../Memory/MemoryDocValuesProducer.cs              |  4 +++-
 .../Memory/MemoryPostingsFormat.cs                 |  2 +-
 .../SimpleText/SimpleTextFieldsReader.cs           |  2 +-
 .../SimpleText/SimpleTextTermVectorsReader.cs      |  2 +-
 .../MemoryIndex.MemoryIndexReader.cs               |  2 +-
 .../Codecs/RAMOnly/RAMOnlyPostingsFormat.cs        |  4 ++--
 .../Index/AssertingAtomicReader.cs                 |  2 +-
 src/Lucene.Net/Codecs/BlockTreeTermsReader.cs      |  2 +-
 .../Compressing/CompressingTermVectorsReader.cs    |  2 +-
 src/Lucene.Net/Codecs/Lucene3x/Lucene3xFields.cs   |  2 +-
 .../Codecs/Lucene3x/Lucene3xTermVectorsReader.cs   |  2 +-
 .../Codecs/Lucene40/Lucene40TermVectorsReader.cs   |  2 +-
 .../Codecs/Lucene42/Lucene42DocValuesProducer.cs   |  7 ++++++-
 .../Codecs/Lucene45/Lucene45DocValuesProducer.cs   |  2 +-
 src/Lucene.Net/Index/FilterAtomicReader.cs         |  6 ++++--
 src/Lucene.Net/Index/FilteredTermsEnum.cs          |  4 ++--
 src/Lucene.Net/Index/SortedDocValuesTermsEnum.cs   |  4 ++--
 .../Index/SortedSetDocValuesTermsEnum.cs           |  4 ++--
 src/Lucene.Net/Search/FuzzyTermsEnum.cs            |  2 +-
 23 files changed, 52 insertions(+), 43 deletions(-)

diff --git a/src/Lucene.Net.Codecs/BlockTerms/BlockTermsReader.cs b/src/Lucene.Net.Codecs/BlockTerms/BlockTermsReader.cs
index f310fb9..215ae43 100644
--- a/src/Lucene.Net.Codecs/BlockTerms/BlockTermsReader.cs
+++ b/src/Lucene.Net.Codecs/BlockTerms/BlockTermsReader.cs
@@ -707,7 +707,7 @@ namespace Lucene.Net.Codecs.BlockTerms
                     // NOTE: meaningless in the non-ord case
                     state.Ord++;
 
-                    return true;
+                    return term != null;
                 }
 
                 [Obsolete("Use MoveNext() and Term instead. This method will be removed in 4.8.0 release candidate."), System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
diff --git a/src/Lucene.Net.Codecs/Bloom/BloomFilteringPostingsFormat.cs b/src/Lucene.Net.Codecs/Bloom/BloomFilteringPostingsFormat.cs
index 28908e3..1f59b28 100644
--- a/src/Lucene.Net.Codecs/Bloom/BloomFilteringPostingsFormat.cs
+++ b/src/Lucene.Net.Codecs/Bloom/BloomFilteringPostingsFormat.cs
@@ -287,7 +287,7 @@ namespace Lucene.Net.Codecs.Bloom
                     delegateTermsEnum = null;
                 }
 
-                private TermsEnum Delegate =>
+                private TermsEnum @delegate =>
                     // pull the iterator only if we really need it -
                     // this can be a relativly heavy operation depending on the 
                     // delegate postings format and they underlying directory
@@ -296,13 +296,13 @@ namespace Lucene.Net.Codecs.Bloom
 
                 public override bool MoveNext()
                 {
-                    return Delegate.MoveNext();
+                    return @delegate.MoveNext();
                 }
 
                 [Obsolete("Use MoveNext() and Term instead. This method will be removed in 4.8.0 release candidate."), System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
                 public override sealed BytesRef Next()
                 {
-                    return Delegate.Next();
+                    return @delegate.Next();
                 }
 
                 public override sealed IComparer<BytesRef> Comparer => _delegateTerms.Comparer;
@@ -318,36 +318,36 @@ namespace Lucene.Net.Codecs.Bloom
                     {
                         return false;
                     }
-                    return Delegate.SeekExact(text);
+                    return @delegate.SeekExact(text);
                 }
 
                 public override sealed SeekStatus SeekCeil(BytesRef text)
                 {
-                    return Delegate.SeekCeil(text);
+                    return @delegate.SeekCeil(text);
                 }
 
                 public override sealed void SeekExact(long ord)
                 {
-                    Delegate.SeekExact(ord);
+                    @delegate.SeekExact(ord);
                 }
 
-                public override sealed BytesRef Term => Delegate.Term;
+                public override sealed BytesRef Term => @delegate.Term;
 
-                public override sealed long Ord => Delegate.Ord;
+                public override sealed long Ord => @delegate.Ord;
 
-                public override sealed int DocFreq => Delegate.DocFreq;
+                public override sealed int DocFreq => @delegate.DocFreq;
 
-                public override sealed long TotalTermFreq => Delegate.TotalTermFreq;
+                public override sealed long TotalTermFreq => @delegate.TotalTermFreq;
 
                 public override DocsAndPositionsEnum DocsAndPositions(IBits liveDocs,
                     DocsAndPositionsEnum reuse, DocsAndPositionsFlags flags)
                 {
-                    return Delegate.DocsAndPositions(liveDocs, reuse, flags);
+                    return @delegate.DocsAndPositions(liveDocs, reuse, flags);
                 }
 
                 public override DocsEnum Docs(IBits liveDocs, DocsEnum reuse, DocsFlags flags)
                 {
-                    return Delegate.Docs(liveDocs, reuse, flags);
+                    return @delegate.Docs(liveDocs, reuse, flags);
                 }
             }
 
diff --git a/src/Lucene.Net.Codecs/Memory/FSTOrdTermsReader.cs b/src/Lucene.Net.Codecs/Memory/FSTOrdTermsReader.cs
index 48007df..acd099e 100644
--- a/src/Lucene.Net.Codecs/Memory/FSTOrdTermsReader.cs
+++ b/src/Lucene.Net.Codecs/Memory/FSTOrdTermsReader.cs
@@ -514,7 +514,7 @@ namespace Lucene.Net.Codecs.Memory
                     }
                     decoded = false;
                     seekPending = false;
-                    return moved;
+                    return moved && term != null;
                 }
 
                 [Obsolete("Use MoveNext() and Term instead. This method will be removed in 4.8.0 release candidate."), System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
@@ -664,7 +664,7 @@ namespace Lucene.Net.Codecs.Memory
                     {
                         pending = false;
                         DecodeStats();
-                        return true;
+                        return term != null;
                     }
                     decoded = false;
                     while (level > 0)
@@ -698,7 +698,7 @@ namespace Lucene.Net.Codecs.Memory
                     }
                 DFSBreak:
                     DecodeStats();
-                    return true;
+                    return term != null;
                 }
 
                 [Obsolete("Use MoveNext() and Term instead. This method will be removed in 4.8.0 release candidate."), System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
diff --git a/src/Lucene.Net.Codecs/Memory/FSTTermsReader.cs b/src/Lucene.Net.Codecs/Memory/FSTTermsReader.cs
index 3a3a9fc..d558c0c 100644
--- a/src/Lucene.Net.Codecs/Memory/FSTTermsReader.cs
+++ b/src/Lucene.Net.Codecs/Memory/FSTTermsReader.cs
@@ -386,7 +386,7 @@ namespace Lucene.Net.Codecs.Memory
                     }
                     decoded = false;
                     seekPending = false;
-                    return moved;
+                    return moved && term != null;
                 }
 
                 [Obsolete("Use MoveNext() and Term instead. This method will be removed in 4.8.0 release candidate."), System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
@@ -582,7 +582,7 @@ namespace Lucene.Net.Codecs.Memory
                     {
                         pending = false;
                         LoadMetaData();
-                        return true;
+                        return term != null;
                     }
                     decoded = false;
                     while (level > 0)
@@ -616,7 +616,7 @@ namespace Lucene.Net.Codecs.Memory
                     }
                 DFSBreak:
                     LoadMetaData();
-                    return true;
+                    return term != null;
                 }
 
                 [Obsolete("Use MoveNext() and Term instead. This method will be removed in 4.8.0 release candidate."), System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
diff --git a/src/Lucene.Net.Codecs/Memory/MemoryDocValuesProducer.cs b/src/Lucene.Net.Codecs/Memory/MemoryDocValuesProducer.cs
index afff0f1..8210227 100644
--- a/src/Lucene.Net.Codecs/Memory/MemoryDocValuesProducer.cs
+++ b/src/Lucene.Net.Codecs/Memory/MemoryDocValuesProducer.cs
@@ -779,7 +779,9 @@ namespace Lucene.Net.Codecs.Memory
 
             public override bool MoveNext()
             {
-                return input.MoveNext();
+                if (input.MoveNext())
+                    return input.Current.Input != null;
+                return false;
             }
 
             [Obsolete("Use MoveNext() and Term instead. This method will be removed in 4.8.0 release candidate."), System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
diff --git a/src/Lucene.Net.Codecs/Memory/MemoryPostingsFormat.cs b/src/Lucene.Net.Codecs/Memory/MemoryPostingsFormat.cs
index 4494b5a..ab012c0 100644
--- a/src/Lucene.Net.Codecs/Memory/MemoryPostingsFormat.cs
+++ b/src/Lucene.Net.Codecs/Memory/MemoryPostingsFormat.cs
@@ -841,7 +841,7 @@ namespace Lucene.Net.Codecs.Memory
                     current = fstEnum.Current;
                     didDecode = false;
                     //System.out.println("  term=" + field.name + ":" + current.input.utf8ToString());
-                    return true;
+                    return current != null;
                 }
                 current = null;
                 //System.out.println("  END");
diff --git a/src/Lucene.Net.Codecs/SimpleText/SimpleTextFieldsReader.cs b/src/Lucene.Net.Codecs/SimpleText/SimpleTextFieldsReader.cs
index 01e9897..b85f22c 100644
--- a/src/Lucene.Net.Codecs/SimpleText/SimpleTextFieldsReader.cs
+++ b/src/Lucene.Net.Codecs/SimpleText/SimpleTextFieldsReader.cs
@@ -168,7 +168,7 @@ namespace Lucene.Net.Codecs.SimpleText
                 _docsStart = pair1.Output1.Value;
                 _docFreq = (int)pair2.Output1;
                 _totalTermFreq = pair2.Output2.Value;
-                return true;
+                return _fstEnum.Current.Input != null;
             }
 
             [Obsolete("Use MoveNext() and Term instead. This method will be removed in 4.8.0 release candidate."), System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
diff --git a/src/Lucene.Net.Codecs/SimpleText/SimpleTextTermVectorsReader.cs b/src/Lucene.Net.Codecs/SimpleText/SimpleTextTermVectorsReader.cs
index fb71bcc..6552273 100644
--- a/src/Lucene.Net.Codecs/SimpleText/SimpleTextTermVectorsReader.cs
+++ b/src/Lucene.Net.Codecs/SimpleText/SimpleTextTermVectorsReader.cs
@@ -391,7 +391,7 @@ namespace Lucene.Net.Codecs.SimpleText
                 if (_iterator.MoveNext())
                 {
                     _current = _iterator.Current;
-                    return true;
+                    return _current.Key != null;
                 }
                 else
                 {
diff --git a/src/Lucene.Net.Memory/MemoryIndex.MemoryIndexReader.cs b/src/Lucene.Net.Memory/MemoryIndex.MemoryIndexReader.cs
index 20ea486..5fa32b6 100644
--- a/src/Lucene.Net.Memory/MemoryIndex.MemoryIndexReader.cs
+++ b/src/Lucene.Net.Memory/MemoryIndex.MemoryIndexReader.cs
@@ -301,7 +301,7 @@ namespace Lucene.Net.Index.Memory
                     else
                     {
                         info.terms.Get(info.sortedTerms[termUpto], br);
-                        return true;
+                        return br != null;
                     }
                 }
 
diff --git a/src/Lucene.Net.TestFramework/Codecs/RAMOnly/RAMOnlyPostingsFormat.cs b/src/Lucene.Net.TestFramework/Codecs/RAMOnly/RAMOnlyPostingsFormat.cs
index 6e1598c..4f83a6f 100644
--- a/src/Lucene.Net.TestFramework/Codecs/RAMOnly/RAMOnlyPostingsFormat.cs
+++ b/src/Lucene.Net.TestFramework/Codecs/RAMOnly/RAMOnlyPostingsFormat.cs
@@ -367,7 +367,7 @@ namespace Lucene.Net.Codecs.RAMOnly
                 if (it.MoveNext())
                 {
                     current = it.Current;
-                    return true;
+                    return current != null;
                 }
                 else
                 {
@@ -427,7 +427,7 @@ namespace Lucene.Net.Codecs.RAMOnly
                 => throw UnsupportedOperationException.Create();
 
             // TODO: reuse BytesRef
-            public override BytesRef Term => new BytesRef(current);
+            public override BytesRef Term => current is null ? null : new BytesRef(current);
 
             public override int DocFreq
                 => ramField.termToDocs[current].docs.Count;
diff --git a/src/Lucene.Net.TestFramework/Index/AssertingAtomicReader.cs b/src/Lucene.Net.TestFramework/Index/AssertingAtomicReader.cs
index 7ed3d5d..a3b11da 100644
--- a/src/Lucene.Net.TestFramework/Index/AssertingAtomicReader.cs
+++ b/src/Lucene.Net.TestFramework/Index/AssertingAtomicReader.cs
@@ -454,7 +454,7 @@ namespace Lucene.Net.Index
                 {
                     if (Debugging.AssertsEnabled) Debugging.Assert(base.Term.IsValid());
                     state = State.POSITIONED;
-                    return true;
+                    return base.Term != null;
                 }
             }
 
diff --git a/src/Lucene.Net/Codecs/BlockTreeTermsReader.cs b/src/Lucene.Net/Codecs/BlockTreeTermsReader.cs
index 4126472..2aa33dc 100644
--- a/src/Lucene.Net/Codecs/BlockTreeTermsReader.cs
+++ b/src/Lucene.Net/Codecs/BlockTreeTermsReader.cs
@@ -2472,7 +2472,7 @@ namespace Lucene.Net.Codecs
                         else
                         {
                             //if (DEBUG) System.out.println("  return term=" + term.utf8ToString() + " " + term + " currentFrame.ord=" + currentFrame.ord);
-                            return true;
+                            return term != null;
                         }
                     }
                 }
diff --git a/src/Lucene.Net/Codecs/Compressing/CompressingTermVectorsReader.cs b/src/Lucene.Net/Codecs/Compressing/CompressingTermVectorsReader.cs
index a6e60f8..d32f69d 100644
--- a/src/Lucene.Net/Codecs/Compressing/CompressingTermVectorsReader.cs
+++ b/src/Lucene.Net/Codecs/Compressing/CompressingTermVectorsReader.cs
@@ -865,7 +865,7 @@ namespace Lucene.Net.Codecs.Compressing
                 }
                 @in.ReadBytes(term.Bytes, prefixLengths[ord], suffixLengths[ord]);
 
-                return true;
+                return term != null;
             }
 
             [Obsolete("Use MoveNext() and Term instead. This method will be removed in 4.8.0 release candidate."), System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
diff --git a/src/Lucene.Net/Codecs/Lucene3x/Lucene3xFields.cs b/src/Lucene.Net/Codecs/Lucene3x/Lucene3xFields.cs
index 215d488..2a31858 100644
--- a/src/Lucene.Net/Codecs/Lucene3x/Lucene3xFields.cs
+++ b/src/Lucene.Net/Codecs/Lucene3x/Lucene3xFields.cs
@@ -995,7 +995,7 @@ namespace Lucene.Net.Codecs.Lucene3x
                     else
                     {
                         current = termEnum.Term().Bytes;
-                        return true;
+                        return current != null;
                     }
                 }
 
diff --git a/src/Lucene.Net/Codecs/Lucene3x/Lucene3xTermVectorsReader.cs b/src/Lucene.Net/Codecs/Lucene3x/Lucene3xTermVectorsReader.cs
index 4451668..ec031cb 100644
--- a/src/Lucene.Net/Codecs/Lucene3x/Lucene3xTermVectorsReader.cs
+++ b/src/Lucene.Net/Codecs/Lucene3x/Lucene3xTermVectorsReader.cs
@@ -564,7 +564,7 @@ namespace Lucene.Net.Codecs.Lucene3x
                 {
                     return false;
                 }
-                return true;
+                return termAndPostings[currentTerm].Term != null;
             }
 
             [Obsolete("Use MoveNext() and Term instead. This method will be removed in 4.8.0 release candidate."), System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
diff --git a/src/Lucene.Net/Codecs/Lucene40/Lucene40TermVectorsReader.cs b/src/Lucene.Net/Codecs/Lucene40/Lucene40TermVectorsReader.cs
index f2079f8..dc5477e 100644
--- a/src/Lucene.Net/Codecs/Lucene40/Lucene40TermVectorsReader.cs
+++ b/src/Lucene.Net/Codecs/Lucene40/Lucene40TermVectorsReader.cs
@@ -541,7 +541,7 @@ namespace Lucene.Net.Codecs.Lucene40
 
                 lastTerm.CopyBytes(term);
                 nextTerm++;
-                return true;
+                return term != null;
             }
 
             [Obsolete("Use MoveNext() and Term instead. This method will be removed in 4.8.0 release candidate."), System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
diff --git a/src/Lucene.Net/Codecs/Lucene42/Lucene42DocValuesProducer.cs b/src/Lucene.Net/Codecs/Lucene42/Lucene42DocValuesProducer.cs
index 7a9df8a..590eac8 100644
--- a/src/Lucene.Net/Codecs/Lucene42/Lucene42DocValuesProducer.cs
+++ b/src/Lucene.Net/Codecs/Lucene42/Lucene42DocValuesProducer.cs
@@ -755,7 +755,12 @@ namespace Lucene.Net.Codecs.Lucene42
                 bytesReader = fst.GetBytesReader();
             }
 
-            public override bool MoveNext() => @in.MoveNext();
+            public override bool MoveNext()
+            {
+                if (@in.MoveNext())
+                    return @in.Current.Input != null;
+                return false;
+            }
 
             [Obsolete("Use MoveNext() and Term instead. This method will be removed in 4.8.0 release candidate."), System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
             public override BytesRef Next()
diff --git a/src/Lucene.Net/Codecs/Lucene45/Lucene45DocValuesProducer.cs b/src/Lucene.Net/Codecs/Lucene45/Lucene45DocValuesProducer.cs
index 36b9d6a..071672b 100644
--- a/src/Lucene.Net/Codecs/Lucene45/Lucene45DocValuesProducer.cs
+++ b/src/Lucene.Net/Codecs/Lucene45/Lucene45DocValuesProducer.cs
@@ -1123,7 +1123,7 @@ namespace Lucene.Net.Codecs.Lucene45
                         input.ReadBytes(termBuffer.Bytes, start, suffix);
                         termBuffer.Length = start + suffix;
                         SetTerm();
-                        return true;
+                        return true; // LUCENENET: term is readonly so cannot be null
                     }
                 }
 
diff --git a/src/Lucene.Net/Index/FilterAtomicReader.cs b/src/Lucene.Net/Index/FilterAtomicReader.cs
index db9e359..a113ec4 100644
--- a/src/Lucene.Net/Index/FilterAtomicReader.cs
+++ b/src/Lucene.Net/Index/FilterAtomicReader.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
 using System.Collections.Generic;
 using System.Text;
 
@@ -163,7 +163,9 @@ namespace Lucene.Net.Index
 
             public override bool MoveNext()
             {
-                return m_input.MoveNext();
+                if (m_input.MoveNext())
+                    return m_input.Term != null;
+                return false;
             }
 
             [Obsolete("Use MoveNext() and Term instead. This method will be removed in 4.8.0 release candidate."), System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
diff --git a/src/Lucene.Net/Index/FilteredTermsEnum.cs b/src/Lucene.Net/Index/FilteredTermsEnum.cs
index 0938130..df81bf1 100644
--- a/src/Lucene.Net/Index/FilteredTermsEnum.cs
+++ b/src/Lucene.Net/Index/FilteredTermsEnum.cs
@@ -1,4 +1,4 @@
-using Lucene.Net.Diagnostics;
+using Lucene.Net.Diagnostics;
 using System;
 using System.Collections.Generic;
 using System.Diagnostics;
@@ -257,7 +257,7 @@ namespace Lucene.Net.Index
                         goto case FilteredTermsEnum.AcceptStatus.YES;
                     case FilteredTermsEnum.AcceptStatus.YES:
                         // term accepted
-                        return true;
+                        return actualTerm != null;
 
                     case FilteredTermsEnum.AcceptStatus.NO_AND_SEEK:
                         // invalid term, seek next time
diff --git a/src/Lucene.Net/Index/SortedDocValuesTermsEnum.cs b/src/Lucene.Net/Index/SortedDocValuesTermsEnum.cs
index 8b7e8db..ccba8c6 100644
--- a/src/Lucene.Net/Index/SortedDocValuesTermsEnum.cs
+++ b/src/Lucene.Net/Index/SortedDocValuesTermsEnum.cs
@@ -1,4 +1,4 @@
-using Lucene.Net.Diagnostics;
+using Lucene.Net.Diagnostics;
 using System;
 using System.Collections.Generic;
 
@@ -107,7 +107,7 @@ namespace Lucene.Net.Index
                 return false;
             }
             values.LookupOrd(currentOrd, term);
-            return true;
+            return term != null;
         }
 
         [Obsolete("Use MoveNext() and Term instead. This method will be removed in 4.8.0 release candidate."), System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
diff --git a/src/Lucene.Net/Index/SortedSetDocValuesTermsEnum.cs b/src/Lucene.Net/Index/SortedSetDocValuesTermsEnum.cs
index 1f51b6e..73bb2bc 100644
--- a/src/Lucene.Net/Index/SortedSetDocValuesTermsEnum.cs
+++ b/src/Lucene.Net/Index/SortedSetDocValuesTermsEnum.cs
@@ -1,4 +1,4 @@
-using Lucene.Net.Diagnostics;
+using Lucene.Net.Diagnostics;
 using System;
 using System.Collections.Generic;
 
@@ -107,7 +107,7 @@ namespace Lucene.Net.Index
                 return false;
             }
             values.LookupOrd(currentOrd, term);
-            return true;
+            return term != null;
         }
 
         [Obsolete("Use MoveNext() and Term instead. This method will be removed in 4.8.0 release candidate."), System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
diff --git a/src/Lucene.Net/Search/FuzzyTermsEnum.cs b/src/Lucene.Net/Search/FuzzyTermsEnum.cs
index 58db0c1..842da5b 100644
--- a/src/Lucene.Net/Search/FuzzyTermsEnum.cs
+++ b/src/Lucene.Net/Search/FuzzyTermsEnum.cs
@@ -295,7 +295,7 @@ namespace Lucene.Net.Search
                 queuedBottom = BytesRef.DeepCopyOf(actualEnum.Term);
             }
 
-            return moved;
+            return moved && actualEnum.Term != null;
         }
 
         [Obsolete("Use MoveNext() and Term instead. This method will be removed in 4.8.0 release candidate."), System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]