Index: lucene/src/java/org/apache/lucene/index/codecs/preflex/PreFlexFields.java =================================================================== --- lucene/src/java/org/apache/lucene/index/codecs/preflex/PreFlexFields.java (revision 957636) +++ lucene/src/java/org/apache/lucene/index/codecs/preflex/PreFlexFields.java (working copy) @@ -319,7 +319,8 @@ assert pendingPrefix != null; assert pendingPrefix.length > seekPrefix; pendingPrefix[seekPrefix] = UnicodeUtil.UNI_SUR_HIGH_START; - Term t2 = protoTerm.createTerm(new String(pendingPrefix, 0, 1+seekPrefix)); + pendingPrefix[1+seekPrefix] = UnicodeUtil.UNI_SUR_LOW_START; + Term t2 = protoTerm.createTerm(new String(pendingPrefix, 0, 2+seekPrefix)); if (DEBUG_SURROGATES) { System.out.println(" do pop; seek back to " + UnicodeUtil.toHexString(t2.text())); } @@ -385,13 +386,13 @@ // surrogate range; if so, we must first iterate // them, then seek back to the surrogates - char[] testPrefix = new char[i+1]; + char[] testPrefix = new char[i+2]; for(int j=0;j