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