Actions
Bug #19055
closedRegexp.new(regexp, timeout: nil) is intrupted by Regexp.timeout
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 3.2.0preview2 (2022-09-09 master 35cfc9a3bb) [x86_64-linux]
Description
It seems that that a code for Regexp timeout
written in the release page[1] is actually interrupted by the Regexp.timeout
(global configuration) in Ruby 3.2.0 preview2 built from the source. Do you know what's wrong?
$ cat reg_timeout2.rb
Regexp.timeout = 1.0
# This regexp has no timeout
long_time_re = Regexp.new("^a*b?a*$", timeout: nil)
long_time_re =~ "a" * 50000 + "x" # never interrupted
The error Regexp::TimeoutError
appeared soon after around 1 second after running the script reg_timeout2.rb
.
$ which ruby
/usr/local/ruby-3.2.0-preview2/bin/ruby
$ ruby -v
ruby 3.2.0preview2 (2022-09-09 master 35cfc9a3bb) [x86_64-linux]
$ ruby reg_timeout2.rb
reg_timeout2.rb:4:in `<main>': regexp match timeout (Regexp::TimeoutError)
$ time ruby reg_timeout2.rb
reg_timeout2.rb:4:in `<main>': regexp match timeout (Regexp::TimeoutError)
real 0m1.072s
user 0m1.053s
sys 0m0.014s
$ echo $?
1
$ which irb
/usr/local/ruby-3.2.0-preview2/bin/irb
$ irb
irb(main):001:0> Regexp.timeout = 1.0
=> 1.0
irb(main):002:0> long_time_re = Regexp.new("^a*b?a*$", timeout: nil)
=> /^a*b?a*$/
irb(main):003:0> long_time_re =~ "a" * 50000 + "x"
(irb):3:in `<main>': regexp match timeout (Regexp::TimeoutError)
from /usr/local/ruby-3.2.0-preview2/lib/ruby/gems/3.2.0+2/gems/irb-1.4.1/exe/irb:11:in `<top (required)>'
from /usr/local/ruby-3.2.0-preview2/bin/irb:25:in `load'
from /usr/local/ruby-3.2.0-preview2/bin/irb:25:in `<main>'
irb(main):004:0>
[1] https://www.ruby-lang.org/en/news/2022/09/09/ruby-3-2-0-preview2-released/
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0