fix to parser filtering, arrays
diff --git a/src/main/java/com/fasterxml/jackson/core/filter/FilteringParserDelegate.java b/src/main/java/com/fasterxml/jackson/core/filter/FilteringParserDelegate.java
index bfbc4ec..98c643d 100644
--- a/src/main/java/com/fasterxml/jackson/core/filter/FilteringParserDelegate.java
+++ b/src/main/java/com/fasterxml/jackson/core/filter/FilteringParserDelegate.java
@@ -234,6 +234,14 @@
// all done with buffered stuff?
if (ctxt == _headContext) {
_exposedContext = null;
+ if (ctxt.inArray()) {
+ t = delegate.getCurrentToken();
+// Is this guaranteed to work without further checks?
+// if (t != JsonToken.START_ARRAY) {
+ _currToken = t;
+ return t;
+ }
+
// Almost! Most likely still have the current token;
// with the sole exception of
/*
@@ -563,7 +571,6 @@
main_loop:
while (true) {
JsonToken t = delegate.nextToken();
-
if (t == null) { // is this even legal?
return (_currToken = t);
}
@@ -584,10 +591,11 @@
f = f.filterStartArray();
}
_itemFilter = f;
- _headContext = _headContext.createChildArrayContext(f, true);
if (f == TokenFilter.INCLUDE_ALL) {
+ _headContext = _headContext.createChildArrayContext(f, true);
return _nextBuffered();
}
+ _headContext = _headContext.createChildArrayContext(f, false);
continue main_loop;
case ID_START_OBJECT: