Bug #2177
closed![Author: Michael Kay](https://www.gravatar.com/avatar/db6526d63053f09b62e52c2da8b2230a?rating=PG&size=50&default=https%3A%2F%2Fassets.plan.io%2Fimages%2Fdefault_avatar.png)
![Assignee: Michael Kay](https://www.gravatar.com/avatar/db6526d63053f09b62e52c2da8b2230a?rating=PG&size=22&default=https%3A%2F%2Fassets.plan.io%2Fimages%2Fdefault_avatar.png)
NullPointerException with literal FilterExpression
100%
Description
If a filter expression after optimization reduces to something like (1 to 20)[89], where both operands are literals and the index is out of range for the length of the sequence, a NullPointerException occurs rather than returning the empty sequence.
Problem code is at line 1121 in FilterExpression.iterate()
return ((Literal)base).getValue().itemAt(pos - 1).iterate();
where itemAt() can return null.
There is also another instance a few lines earlier where the base expression is a variable reference.
Updated by Michael Kay almost 10 years ago
Reproduced, and fix tested, using the above query with -opt:0. The problem probably occurs only if optimisation is disabled. Also as far as I can see the problem does not occur on the bytecode path, only when interpreted.
A patch has been committed on the 9.6 branch (in addition to the earlier 9.7 fix).
Updated by O'Neil Delpratt over 9 years ago
- Status changed from Resolved to Closed
- % Done changed from 0 to 100
- Fixed in version set to 9.6.0.2
Bug fix applied to the maintenance release Saxon 9.6.0.2
Updated by O'Neil Delpratt over 8 years ago
- Sprint/Milestone set to 9.6.0.2
- Applies to branch 9.6 added
- Fix Committed on Branch 9.6 added
- Fixed in Maintenance Release 9.6.0.2 added
Please register to edit this issue