diff --git a/exist-core/src/main/java/org/exist/xquery/value/SubSequence.java b/exist-core/src/main/java/org/exist/xquery/value/SubSequence.java index acd7160c3b3..822cdd975a3 100644 --- a/exist-core/src/main/java/org/exist/xquery/value/SubSequence.java +++ b/exist-core/src/main/java/org/exist/xquery/value/SubSequence.java @@ -204,7 +204,7 @@ public Sequence tail() { return Sequence.EMPTY_SEQUENCE; } - return new SubSequence(fromInclusive + 1, toExclusive -1, sequence); + return new SubSequence(fromInclusive + 1, toExclusive, sequence); } @Override diff --git a/exist-core/src/test/xquery/subsequence.xq b/exist-core/src/test/xquery/subsequence.xq index af2f5d5fa14..6444cf82776 100644 --- a/exist-core/src/test/xquery/subsequence.xq +++ b/exist-core/src/test/xquery/subsequence.xq @@ -30,3 +30,27 @@ declare function ss:pipeline1() { ("x", "y") => subsequence(1, 1) => matches("x") }; + +declare + %test:args(1,1) + %test:assertEmpty + %test:args(3,1) + %test:assertEmpty + %test:args(5,1) + %test:assertEmpty + %test:args(1,2) + %test:assertEquals(2) + %test:args(3,2) + %test:assertEquals(4) + %test:args(5,2) + %test:assertEmpty(4) + %test:args(1,3) + %test:assertEquals(2,3) + %test:args(3,3) + %test:assertEquals(4,5) + %test:args(1,5) + %test:assertEquals(2,3,4,5) +function ss:tail($start, $length) { + tail( + subsequence((1 to 5), $start, $length)) +};