summaryrefslogtreecommitdiffhomepage
path: root/src/vm.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-10-09 14:15:06 +0900
committerGitHub <[email protected]>2021-10-09 14:15:06 +0900
commit5cdf1eabdd5b57170d600b673ca3dd1f08809495 (patch)
tree56ae5896906396b03d604e4b6796456f94da3d4c /src/vm.c
parent07f805aa88635654f82cd9ffa01a7f25d70ac4f1 (diff)
parent8c355ec7e36eaccd7ac39b15fc340cf7894adc40 (diff)
downloadmruby-5cdf1eabdd5b57170d600b673ca3dd1f08809495.tar.gz
mruby-5cdf1eabdd5b57170d600b673ca3dd1f08809495.zip
Merge pull request #5555 from dearblue/str-ref-regexp
Partially allow overriding of `String#[]` methods
Diffstat (limited to 'src/vm.c')
-rw-r--r--src/vm.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/vm.c b/src/vm.c
index 30eb08739..e675b594e 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -1261,7 +1261,15 @@ RETRY_TRY_BLOCK:
regs[a] = mrb_hash_get(mrb, va, vb);
break;
case MRB_TT_STRING:
- regs[a] = mrb_str_aref(mrb, va, vb, mrb_undef_value());
+ switch (mrb_type(vb)) {
+ case MRB_TT_INTEGER:
+ case MRB_TT_STRING:
+ case MRB_TT_RANGE:
+ regs[a] = mrb_str_aref(mrb, va, vb, mrb_undef_value());
+ break;
+ default:
+ goto getidx_fallback;
+ }
break;
default:
getidx_fallback: