summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-string-ext/mrblib
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2018-09-19 21:51:53 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2018-11-19 12:05:46 +0900
commitff08856fe314faa4d16b4502c0960a3475387846 (patch)
tree5e5bd17dc3d05a9be4c02fe80d3ecfea0ff68269 /mrbgems/mruby-string-ext/mrblib
parentafca99a40b8a3415b3a9a0e8fc41c93ddcbb11d8 (diff)
downloadmruby-ff08856fe314faa4d16b4502c0960a3475387846.tar.gz
mruby-ff08856fe314faa4d16b4502c0960a3475387846.zip
Remove implicit conversion using `to_str` method; fix #3854
We have added internal convenience method `__to_str` which does string type check. The issue #3854 was fixed but fundamental flaw of lack of stack depth check along with fibers still remains. Use `MRB_GC_FIXED_ARENA` for workaround.
Diffstat (limited to 'mrbgems/mruby-string-ext/mrblib')
-rw-r--r--mrbgems/mruby-string-ext/mrblib/string.rb6
1 files changed, 3 insertions, 3 deletions
diff --git a/mrbgems/mruby-string-ext/mrblib/string.rb b/mrbgems/mruby-string-ext/mrblib/string.rb
index 27ca30610..9212d83a5 100644
--- a/mrbgems/mruby-string-ext/mrblib/string.rb
+++ b/mrbgems/mruby-string-ext/mrblib/string.rb
@@ -12,8 +12,8 @@ class String
# String.try_convert(/re/) #=> nil
#
def self.try_convert(obj)
- if obj.respond_to?(:to_str)
- obj.to_str
+ if self === obj
+ obj
else
nil
end
@@ -142,7 +142,7 @@ class String
# "abcdef".casecmp("ABCDEF") #=> 0
#
def casecmp(str)
- self.downcase <=> str.to_str.downcase
+ self.downcase <=> str.__to_str.downcase
rescue NoMethodError
nil
end