Project

Profile

Help

Bug #6346

open

NPE with replace() on SaxonJS2.6 when exported under 4.0-support conditions

Added by John Lumley 2 months ago. Updated 2 months ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
-
Sprint/Milestone:
-
Start date:
2024-02-14
Due date:
% Done:

0%

Estimated time:
Applies to JS Branch:
Trunk
Fix Committed on JS Branch:
Fixed in JS Release:
SEF Generated with:
Platforms:
Company:
-
Contact person:
-
Additional contact persons:
-

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

replaceBug.sef.json (1.62 KB) replaceBug.sef.json John Lumley, 2024-02-14 15:03
replaceBug.xhtml (414 Bytes) replaceBug.xhtml John Lumley, 2024-02-14 15:03
replaceBug.xsl (561 Bytes) replaceBug.xsl John Lumley, 2024-02-14 15:03
Actions #1

Updated by Debbie Lockett 2 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.

Please register to edit this issue

Also available in: Atom PDF Tracking page