summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortomoya ishida <[email protected]>2024-10-13 22:00:17 +0900
committergit <[email protected]>2024-10-13 13:00:20 +0000
commitcf8388f76c4c2ff2f46d0d2aa2cf5186e05ff606 (patch)
treeae20f53ee125b498d65c496fac0989d3015dcb41
parent6393d2950ddcaa75f92cde9917cf3e4edf9b5347 (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.rb15
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)