Skip to content

Commit f47d612

Browse files
committed
Also use safe_load with each_value, values and shift
1 parent c3d0f64 commit f47d612

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

lib/yaml/dbm.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ def each_pair # :yields: [key, value]
158158
#
159159
# Returns +self+.
160160
def each_value # :yields: value
161-
super { |v| yield YAML.load( v ) }
161+
super { |v| yield YAML.respond_to?(:safe_load) ? YAML.safe_load( v ) : YAML.load( v ) }
162162
self
163163
end
164164

@@ -167,7 +167,7 @@ def each_value # :yields: value
167167
#
168168
# Returns an array of values from the database.
169169
def values
170-
super.collect { |v| YAML.load( v ) }
170+
super.collect { |v| YAML.respond_to?(:safe_load) ? YAML.safe_load( v ) : YAML.load( v ) }
171171
end
172172

173173
# :call-seq:
@@ -213,7 +213,9 @@ def replace( hsh )
213213
# The order in which values are removed/returned is not guaranteed.
214214
def shift
215215
a = super
216-
a[1] = YAML.load( a[1] ) if a
216+
if a
217+
a[1] = YAML.respond_to?(:safe_load) ? YAML.safe_load( a[1] ) : YAML.load( a[1] )
218+
end
217219
a
218220
end
219221

test/yaml/test_dbm.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,25 @@ def test_delete
2222
assert_equal "value", @dbm.delete("key")
2323
assert_nil @dbm["key"]
2424
end
25+
26+
def test_each_value
27+
@dbm["key1"] = "value1"
28+
@dbm["key2"] = "value2"
29+
@dbm.each_value do |value|
30+
assert_match(/value[12]/, value)
31+
end
32+
end
33+
34+
def test_values
35+
@dbm["key1"] = "value1"
36+
@dbm["key2"] = "value2"
37+
@dbm.values.each do |value|
38+
assert_match(/value[12]/, value)
39+
end
40+
end
41+
42+
def test_shift
43+
@dbm["key"] = "value"
44+
assert_equal ["key", "value"], @dbm.shift
45+
end
2546
end

0 commit comments

Comments
 (0)