Actions
Bug #14101
closedUnreliable handling of groups nested within absent/absence operator of regex
Description
The new absent/absence regex operator, added to Onigmo and bundled into ruby since v2.4.1, supports nested groupings such as:
"abb".match /(?~(a|b)b)/
=> #<MatchData "a" 1:"a">
However, under some scenarios (I haven't been able to determine the exact cause), the execution fails:
"abb".match /(?~(a|c)c)/
ArgumentError: negative string size (or size too big)
from (irb):1:in `scan'
Interestingly, when running the above in pry
, we see some malformed object created:
"abb".match /(?~(a|c)c)/
#=> #<MatchData "abb" 1:#<MatchData:0x3fd47ec398d4>
"abb".scan /(?~(a|c)c)/
#=> ArgumentError: negative string size (or size too big)
I am unclear whether this bug belongs in the ruby project, or Onigmo.
Documentation on the operator is still a work in progress (https://github.com/k-takata/Onigmo/issues/87); perhaps nested groups should not be allowed by the engine?
Actions
Like0
Like0Like0