Project

General

Profile

Bug #1329

Updated by jeremyevans0 (Jeremy Evans) over 4 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 
 

Back