Index: lucene/facet/src/java/org/apache/lucene/util/encoding/VInt8IntDecoder.java =================================================================== --- lucene/facet/src/java/org/apache/lucene/util/encoding/VInt8IntDecoder.java (revision 1432028) +++ lucene/facet/src/java/org/apache/lucene/util/encoding/VInt8IntDecoder.java (working copy) @@ -29,12 +29,30 @@ @Override protected void doDecode(BytesRef buf, IntsRef values, int upto) { + int needed = upto - buf.offset; + if (values.length < needed) { + values.grow(needed); + } + int value = 0; + int offset = buf.offset; + while (offset < upto) { + byte b = buf.bytes[offset++]; + if (b >= 0) { + values.ints[values.length++] = (value << 7) | b; + value = 0; + } else { + value = (value << 7) | (b & 0x7F); + } + } + + /* while (buf.offset < upto) { if (values.length == values.ints.length) { values.grow(values.length + 10); // grow by few items, however not too many } values.ints[values.length++] = VInt8.decode(buf); } + */ } @Override