Bug #6346
closedNPE with replace() on SaxonJS2.6 when exported under 4.0-support conditions
0%
Description
When exporting a stylesheet (either 3.0 or 4.0) for SaxonJS 2.6, using SaxonEE 12.4 running under --allowSyntaxExtensions:on
,
a three-argument call on replace()
(that is with the fourth $flags
argument to default to the empty string), at runtime a null pointer expection is thrown when attempting to retrieve the flags:
const flags = args[3] ? args[3].next().toString() : "";
The next()
returns a null.
Without allowSyntaxExtensions
or with the fourth argument supplied, the function behaves as expected.
Sample stylesheet, compiled SEF and web page attached
Files
Updated by Debbie Lockett 10 months ago
Basically, SaxonJS 2 does not support 4.0 syntax, so exporting for -target:JS
from 12.4 with --allowSyntaxExtensions:on
is not supported.
As you have found, although the stylesheet may compile, it will not necessarily run. I think this is a Saxon 12 bug, rather than a SaxonJS bug. We should add something in the documentation to clarify this (i.e. you can't use 4.0 syntax and --allowSyntaxExtensions:on
when exporting for SaxonJS 2). Also it would be better if this was clearer at compile time - i.e. the compile should fail, or at least produce a warning.
Updated by Debbie Lockett 7 months ago
- Category set to Documentation
- Status changed from New to Closed
- Assignee set to Debbie Lockett
The problem was belatedly raised as Saxon Bug #6433: Forbid enabling 4.0 and specifying an SEF target of JS2/3, which has been resolved on the saxon12 branch and will be fixed in the next maintenance release 12.5.
I've added a note in the SaxonJS documentation to state that 4.0 language extensions are not supported in SaxonJS (at https://www.saxonica.com/saxon-js/documentation2/index.html#!ixsl-extension/saxon-extensions).
Please register to edit this issue
Also available in: Atom PDF Tracking page