Bug #1329
Updated by jeremyevans0 (Jeremy Evans) over 5 years ago
=begin "p eval('0' + '+0.1'*n)" を評価すると、 n がある値 N1 を超えたときに TypeError が、 N2 を超えたときに Segmentation Fault が発生します。 N1 と N2 がアーキテクチャに依存するかどうかは調べてません。 $ ~/ruby-1.8.8-r23009/bin/ruby -ve "p eval('0'+'+0.1'*4581)" ruby 1.8.8dev (2009-03-19) [i386-darwin9.6.0] 458.100000000036 $ ~/ruby-1.8.8-r23009/bin/ruby -ve "p eval('0'+'+0.1'*4582)" ruby 1.8.8dev (2009-03-19) [i386-darwin9.6.0] -e:1: can't modify frozen string (TypeError) $ ~/ruby-1.8.8-r23009/bin/ruby -ve "p eval('0'+'+0.1'*5132)" ruby 1.8.8dev (2009-03-19) [i386-darwin9.6.0] -e:1: can't modify frozen string (TypeError) $ ~/ruby-1.8.8-r23009/bin/ruby -ve "p eval('0'+'+0.1'*5133)" ruby 1.8.8dev (2009-03-19) [i386-darwin9.6.0] Segmentation fault eval しなければ TypeError も SEGV も発生しないことは確認済です。 $ ~/ruby-1.8.8-r23009/bin/ruby -ve "'0'+'+0.1'*5133" ruby 1.8.8dev (2009-03-19) [i386-darwin9.6.0] -e:1: warning: useless use of + in void context =end