diff options
author | Victor Shepelev <zverok.offline@gmail.com> | 2021-12-24 10:55:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-24 09:55:09 +0100 |
commit | 1706d1a7f3abd3ed1259607a05f0de1ee85e23c2 (patch) | |
tree | ebd469ba1c04d36901bdb1d9e50319d4e2753b23 /marshal.rb | |
parent | 35d779c57b266953a93c2f89487e913d00a40458 (diff) |
[DOC] Document Marshal#load parameter freeze: (#5332)
Notes
Notes:
Merged-By: byroot <jean.boussier@gmail.com>
Diffstat (limited to 'marshal.rb')
-rw-r--r-- | marshal.rb | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/marshal.rb b/marshal.rb index b8b5ce9e82..9ff74dd8b2 100644 --- a/marshal.rb +++ b/marshal.rb @@ -1,7 +1,7 @@ module Marshal # call-seq: - # load( source [, proc] ) -> obj - # restore( source [, proc] ) -> obj + # load(source, proc = nil, freeze: false) -> obj + # restore(source, proc = nil, freeze: false) -> obj # # Returns the result of converting the serialized data in source into a # Ruby object (possibly with associated subordinate objects). source @@ -11,6 +11,25 @@ module Marshal # # Never pass untrusted data (including user supplied input) to this method. # Please see the overview for further details. + # + # If the <tt>freeze: true</tt> argument is passed, deserialized object would + # be deeply frozen. Note that it may lead to more efficient memory usage due to + # frozen strings deduplication: + # + # serialized = Marshal.dump(['value1', 'value2', 'value1', 'value2']) + # + # deserialized = Marshal.load(serialized) + # deserialized.map(&:frozen?) + # # => [false, false, false, false] + # deserialized.map(&:object_id) + # # => [1023900, 1023920, 1023940, 1023960] -- 4 different objects + # + # deserialized = Marshal.load(serialized, freeze: true) + # deserialized.map(&:frozen?) + # # => [true, true, true, true] + # deserialized.map(&:object_id) + # # => [1039360, 1039380, 1039360, 1039380] -- only 2 different objects, object_ids repeating + # def self.load(source, proc = nil, freeze: false) Primitive.marshal_load(source, proc, freeze) end |