summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Thorn <mcthorn@gmail.com>2020-03-03 10:03:28 -0800
committerNobuyoshi Nakada <nobu@ruby-lang.org>2020-06-05 11:49:56 +0900
commitf2459763862fa2eef6929557a87763fe5ff5c470 (patch)
treeee834e093a66e42bd9ddfda618fea0d2f2ba614a
parent5ed58b90d188b26e5369397b48edaba287ab09fe (diff)
[ruby/psych] Fix ArgumentError with leading and trailing underscores in number strings.
https://github.com/ruby/psych/commit/ac2d2c9b1b
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/3188
-rw-r--r--ext/psych/lib/psych/scalar_scanner.rb2
-rw-r--r--test/psych/test_scalar_scanner.rb3
2 files changed, 4 insertions, 1 deletions
diff --git a/ext/psych/lib/psych/scalar_scanner.rb b/ext/psych/lib/psych/scalar_scanner.rb
index cea2a453dd6..d565a336e89 100644
--- a/ext/psych/lib/psych/scalar_scanner.rb
+++ b/ext/psych/lib/psych/scalar_scanner.rb
@@ -101,7 +101,7 @@ module Psych
###
# Parse and return an int from +string+
def parse_int string
- Integer(string.gsub(/[,]/, ''))
+ Integer(string.gsub(/[,_]/, ''))
end
###
diff --git a/test/psych/test_scalar_scanner.rb b/test/psych/test_scalar_scanner.rb
index d12a9053307..1bd6488e754 100644
--- a/test/psych/test_scalar_scanner.rb
+++ b/test/psych/test_scalar_scanner.rb
@@ -120,6 +120,7 @@ module Psych
assert_equal 123_456_789, ss.tokenize('123_456_789')
assert_equal 123_456_789, ss.tokenize('123,456,789')
assert_equal 123_456_789, ss.tokenize('1_2,3,4_5,6_789')
+ assert_equal 123_456_789, ss.tokenize('1_2,3,4_5,6_789_')
assert_equal 0b010101010, ss.tokenize('0b010101010')
assert_equal 0b010101010, ss.tokenize('0b0,1_0,1_,0,1_01,0')
@@ -129,6 +130,8 @@ module Psych
assert_equal 0x123456789abcdef, ss.tokenize('0x123456789abcdef')
assert_equal 0x123456789abcdef, ss.tokenize('0x12_,34,_56,_789abcdef')
+ assert_equal 0x123456789abcdef, ss.tokenize('0x_12_,34,_56,_789abcdef')
+ assert_equal 0x123456789abcdef, ss.tokenize('0x12_,34,_56,_789abcdef__')
end
end
end