0

我正在尝试对(不幸的是)用 Ruby 1.8.7 编写的代码进行刹车检查。有时,整个构建会中断并吐出以下错误:

regexp buffer overflow While processing

我注意到在 ruby​​ 1.8.7 中,缓冲区似乎约为 5460。我通过运行以下命令发现了这一点

 REGEX = /.*(?=[x])/

(0..10_000_000).each do |i|
  begin
    ss = StringScanner.new("a" * i + "x")
    ss.scan(REGEX)
  rescue RegexpError => e
    p i
    break
  end
end

更新:

这个错误是由 ruby​​ 的 StringScanner 类引发的。我做了一些挖掘,发现这里出现了错误:https ://github.com/sj26/ruby-1.9.3-p0/blob/master/ext/strscan/strscan.c#L444 。有谁知道是什么导致了这个错误。而且,为什么这在引入模板后突然失败了?

4

0 回答 0