diff options
| author | skandhas <[email protected]> | 2012-12-20 22:17:36 +0800 |
|---|---|---|
| committer | skandhas <[email protected]> | 2012-12-20 22:17:36 +0800 |
| commit | 2ca47bba8f509337f3b3fb22ad6c8bac46e542ac (patch) | |
| tree | 2533116ea3de4799e72d460aefe315ac45c9de13 | |
| parent | f341957fe57f9ee1f492bf89cf95685eac9ef1f2 (diff) | |
| download | mruby-2ca47bba8f509337f3b3fb22ad6c8bac46e542ac.tar.gz mruby-2ca47bba8f509337f3b3fb22ad6c8bac46e542ac.zip | |
add check_cv_name
| -rw-r--r-- | src/class.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/class.c b/src/class.c index d46b63f2b..19a697bc8 100644 --- a/src/class.c +++ b/src/class.c @@ -1444,6 +1444,18 @@ mrb_sym_value(mrb_state *mrb, mrb_value val) return mrb_symbol(val); } +static void +check_cv_name(mrb_state *mrb, mrb_sym id) +{ + const char *s; + int len; + + s = mrb_sym2name_len(mrb, id, &len); + if (len < 3 || !(s[0] == '@' && s[1] == '@')) { + mrb_name_error(mrb, id, "`%s' is not allowed as a class variable name", s); + } +} + /* 15.2.2.4.17 */ /* * call-seq: @@ -1467,7 +1479,7 @@ mrb_mod_cvar_get(mrb_state *mrb, mrb_value mod) mrb_get_args(mrb, "o", &sym); id = mrb_sym_value(mrb,sym); - check_cvar_name(mrb, id); + check_cv_name(mrb, id); return mrb_cv_get(mrb, mod, id); } |
