Henri Biestro created JEXL-470:
----------------------------------
Summary: Fix several parser and interpreter correctness nits
Key: JEXL-470
URL: https://issues.apache.org/jira/browse/JEXL-470
Project: Commons JEXL
Issue Type: Bug
Affects Versions: 3.7.0
Reporter: Henri Biestro
Assignee: Henri Biestro
Fix For: 3.7.1
- Unicode escapes: \uXXXX accepted g–h / G–H as valid hex digits due to an
off-by-one in the range check; invalid sequences now pass through literally.
- Safe-navigation array access: a[b]?[c] keyed the safe-navigation flag off the
count of ?[ tokens rather than the child index, so the wrong bracket was
marked. The index is now derived from the child position and saturated past 64
brackets.
- Regex escapes: regex literal bodies were processed through the string-escape
handler, destroying sequences like \b, \d, \w. Bodies are now passed through
verbatim (only \/ → / is translated); Pattern.compile failures are wrapped as
JexlException.Parsing; the Debugger gains a matching escapeRegex round-trip
inverse.
- empty()/size() swallowing errors: in a strict engine, non-cancellation errors
were mapped to true/0 instead of being rethrown; JexlException.Cancel was also
silently swallowed in all modes.
- switch + continue: a continue inside a switch was consumed by the switch
instead of propagating to the enclosing loop, contrary to Java semantics.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)