From 2ca47bba8f509337f3b3fb22ad6c8bac46e542ac Mon Sep 17 00:00:00 2001 From: skandhas Date: Thu, 20 Dec 2012 22:17:36 +0800 Subject: add check_cv_name --- src/class.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/class.c') 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); } -- cgit v1.2.3