Bug #1639
closedIncorrect comparison of two evaluated empty sequences in bytecode generation mode
100%
Description
The attached stylesheet produces
Files
Updated by Max Zhaloba about 12 years ago
- File bytecode.xsl bytecode.xsl added
The attached stylesheet applied to any document produces "true" when bytecode generation is off and an empty sequence when it's on. Returning an empty sequence as a result of functions f1 and f2 violates their return types. The bug can be bypassed changing the 'eq' operator to '='.
Updated by Michael Kay about 12 years ago
- Assignee set to O'Neil Delpratt
Thanks for reporting it. We'll look into it. You may not hear from us for a few days as we're all away at W3C meetings this week.
Updated by Michael Kay about 12 years ago
We're working on it. Note that when $A is an empty sequence and f() throws an error, the result of ($A = f()) can be either an empty sequence or an error - both results are allowed. (The system isn't required to evaluate the second operand just to see if it throws an error.) The same is true for the "eq" operator. However, with bytecode generation on, we seem to be generating incorrect code for the case not($A eq f()) - the result should either be true or an error, never an empty sequence.
Updated by O'Neil Delpratt about 12 years ago
- Status changed from New to Resolved
- % Done changed from 0 to 100
Bug fixed and committed to bytecode, which will be available in the next maintenance release.
Updated by O'Neil Delpratt over 11 years ago
- Status changed from Resolved to Closed
- Fixed in version set to 9.4.0.7
Bug closed. Fixed in Saxon maintenance release 9.4.0.7
Please register to edit this issue