From cf8388f76c4c2ff2f46d0d2aa2cf5186e05ff606 Mon Sep 17 00:00:00 2001 From: tomoya ishida Date: Sun, 13 Oct 2024 22:00:17 +0900 Subject: [PATCH] [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 --- lib/irb/history.rb | 15 +++------------ 1 file 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 IRB.conf[:HISTORY_FILE]. 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)