diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-03-12 23:48:48 +0900 |
|---|---|---|
| committer | GitHub <[email protected]> | 2019-03-12 23:48:48 +0900 |
| commit | 1d38c1f307e6ff915a7284421cdd11a1b840a2fe (patch) | |
| tree | e7930eb3229ef308366908bf4b4261d222cf1400 /src | |
| parent | d2c325d08a8592f1bcfa99818bbecf47ffd63f73 (diff) | |
| parent | 425e6e0ffb0e2935b800866443fb18ccb26a97e4 (diff) | |
| download | mruby-1d38c1f307e6ff915a7284421cdd11a1b840a2fe.tar.gz mruby-1d38c1f307e6ff915a7284421cdd11a1b840a2fe.zip | |
Merge pull request #4322 from shuujii/reduce-String-creation-in-checking-name
Reduce `String` creation in `check_(cv|const)_name_sym`
Diffstat (limited to 'src')
| -rw-r--r-- | src/class.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/class.c b/src/class.c index bb9515bbd..9d6fd631f 100644 --- a/src/class.c +++ b/src/class.c @@ -1895,18 +1895,20 @@ mrb_mod_undef(mrb_state *mrb, mrb_value mod) return mrb_nil_value(); } -static void -check_const_name_str(mrb_state *mrb, mrb_value str) +static mrb_bool +const_name_p(mrb_state *mrb, const char *name, mrb_int len) { - if (RSTRING_LEN(str) < 1 || !ISUPPER(*RSTRING_PTR(str))) { - mrb_name_error(mrb, mrb_intern_str(mrb, str), "wrong constant name %S", str); - } + return len > 0 && ISUPPER(name[0]); } static void check_const_name_sym(mrb_state *mrb, mrb_sym id) { - check_const_name_str(mrb, mrb_sym2str(mrb, id)); + mrb_int len; + const char *name = mrb_sym2name_len(mrb, id, &len); + if (!const_name_p(mrb, name, len)) { + mrb_name_error(mrb, id, "wrong constant name %S", mrb_sym2str(mrb, id)); + } } static mrb_value |
