diff options
author | tomoya ishida <[email protected]> | 2024-10-13 22:00:17 +0900 |
---|---|---|
committer | git <[email protected]> | 2024-10-13 13:00:20 +0000 |
commit | cf8388f76c4c2ff2f46d0d2aa2cf5186e05ff606 (patch) | |
tree | ae20f53ee125b498d65c496fac0989d3015dcb41 | |
parent | 6393d2950ddcaa75f92cde9917cf3e4edf9b5347 (diff) |
[ruby/irb] Remove bignum check from save_history
(https://github.com/ruby/irb/pull/1018)
IRB need to accept bignum history size, but we don't want explicit bignum checks because threshold of bignum and fixnum depends on platform.
https://github.com/ruby/irb/commit/5151467e6a
-rw-r--r-- | lib/irb/history.rb | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/lib/irb/history.rb b/lib/irb/history.rb index a428003d2d..25fa71b9c3 100644 --- a/lib/irb/history.rb +++ b/lib/irb/history.rb @@ -5,10 +5,7 @@ module IRB class << self # Integer representation of <code>IRB.conf[:HISTORY_FILE]</code>. def save_history - num = IRB.conf[:SAVE_HISTORY].to_i - # Bignums cause RangeErrors when slicing arrays. - # Treat such values as 'infinite'. - (num > save_history_max) ? -1 : num + IRB.conf[:SAVE_HISTORY].to_i end def save_history? @@ -27,13 +24,6 @@ module IRB IRB.rc_file("_history") end end - - private - - def save_history_max - # Max fixnum (32-bit) that can be used without getting RangeError. - 2**30 - 1 - end end end @@ -90,7 +80,8 @@ module IRB hist = history.map { |l| l.scrub.split("\n").join("\\\n") } unless append_history || History.infinite? - hist = hist.last(History.save_history) + # Check size before slicing because array.last(huge_number) raises RangeError. + hist = hist.last(History.save_history) if hist.size > History.save_history end f.puts(hist) |