diff options
author | Cliff Pruitt <cliff.pruitt@cliffpruitt.com> | 2019-07-31 12:11:31 -0400 |
---|---|---|
committer | Cliff Pruitt <cliff.pruitt@cliffpruitt.com> | 2019-07-31 12:11:31 -0400 |
commit | fc6ec7bfc7d1cc13380ac91eac3caeaa5e37df02 (patch) | |
tree | 0c788144fede2f6db763828b289acb87368a050e /activesupport/lib | |
parent | 4c8c8c87b07844b26564ca6aa2052660e601bc3d (diff) | |
download | rails-fc6ec7bfc7d1cc13380ac91eac3caeaa5e37df02.tar.gz rails-fc6ec7bfc7d1cc13380ac91eac3caeaa5e37df02.tar.bz2 rails-fc6ec7bfc7d1cc13380ac91eac3caeaa5e37df02.zip |
Prevent error on transliterate with frozen strings.
ActiveSupport::Inflector.transliterate mutates strings by changing encodings. Prior to this commit passing a frozen string would raise a `FrozenError`. This change duplicates the internal string, if frozen, before transliterating.
Diffstat (limited to 'activesupport/lib')
-rw-r--r-- | activesupport/lib/active_support/inflector/transliterate.rb | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/inflector/transliterate.rb b/activesupport/lib/active_support/inflector/transliterate.rb index 3ba2d93ed8..1899a1212d 100644 --- a/activesupport/lib/active_support/inflector/transliterate.rb +++ b/activesupport/lib/active_support/inflector/transliterate.rb @@ -60,6 +60,7 @@ module ActiveSupport # Transliteration is restricted to UTF-8, US-ASCII and GB18030 strings # Other encodings will raise an ArgumentError. def transliterate(string, replacement = "?", locale: nil) + string = string.dup if string.frozen? raise ArgumentError, "Can only transliterate strings. Received #{string.class.name}" unless string.is_a?(String) allowed_encodings = [Encoding::UTF_8, Encoding::US_ASCII, Encoding::GB18030] |