Check the entire name as ruby2_keywords_flag
[Bug #18184]
This commit is contained in:
parent
e2976fd1f6
commit
7c0230b05d
@ -1424,7 +1424,7 @@ ruby2_keywords_flag_check(VALUE sym)
|
|||||||
long l;
|
long l;
|
||||||
RSTRING_GETMEM(sym, p, l);
|
RSTRING_GETMEM(sym, p, l);
|
||||||
if (l <= 0) return 0;
|
if (l <= 0) return 0;
|
||||||
if (name_equal(name_s_ruby2_keywords_flag, rb_strlen_lit(name_s_ruby2_keywords_flag), p, 1)) {
|
if (name_equal(name_s_ruby2_keywords_flag, rb_strlen_lit(name_s_ruby2_keywords_flag), p, l)) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -806,8 +806,14 @@ class TestMarshal < Test::Unit::TestCase
|
|||||||
|
|
||||||
def test_marshal_with_ruby2_keywords_hash
|
def test_marshal_with_ruby2_keywords_hash
|
||||||
flagged_hash = ruby2_keywords_hash(key: 42)
|
flagged_hash = ruby2_keywords_hash(key: 42)
|
||||||
hash = Marshal.load(Marshal.dump(flagged_hash))
|
data = Marshal.dump(flagged_hash)
|
||||||
|
hash = Marshal.load(data)
|
||||||
assert_equal(42, ruby2_keywords_test(*[hash]))
|
assert_equal(42, ruby2_keywords_test(*[hash]))
|
||||||
|
|
||||||
|
hash2 = Marshal.load(data.sub!(/\x06K(?=T\z)/, "\x08KEY"))
|
||||||
|
assert_raise(ArgumentError, /\(given 1, expected 0\)/) {
|
||||||
|
ruby2_keywords_test(*[hash2])
|
||||||
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
def exception_test
|
def exception_test
|
||||||
|
Loading…
x
Reference in New Issue
Block a user