[ruby-core:93233] [Ruby trunk Bug#15938] Error thrown undeterministically: `RegexpError: empty range in char class`
From:
davidomundo@...
Date:
2019-06-19 01:30:11 UTC
List:
ruby-core #93233
Issue #15938 has been updated by dlee (David Lee).
FYI, these errors are deterministically thrown in ruby versions 2.5+, albeit with a different error message: `unmatched range specifier in char-class`.
----------------------------------------
Bug #15938: Error thrown undeterministically: `RegexpError: empty range in char class`
https://bugs.ruby-lang.org/issues/15938#change-78683
* Author: dlee (David Lee)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
* ruby -v: 2.4.6
* Backport: 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
When instantiating a Regexp, we only sometimes see `RegexpError: empty range in char class`.
To reproduce:
`100.times { Regexp.new("^([\\w'+-.%]+@[\\w-.]+\\.[A-Za-z]{2,25})(,[\\w+-.%]+@[\\w-.]+\\.[A-Za-z]{2,4}){0,4}$") }`
usually does not throw the error, but
`100000.times { Regexp.new("^([\\w'+-.%]+@[\\w-.]+\\.[A-Za-z]{2,25})(,[\\w+-.%]+@[\\w-.]+\\.[A-Za-z]{2,4}){0,4}$") }`
usually throws the error.
Furthermore, sometimes accompanying calls matter:
`10.times { Regexp.new("[\\w-.]"); Regexp.new("[\\w-]") }`
usually does not throw the error, but
`10.times { Regexp.new("[\\w-.]") }`
usually throws the error.
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>