summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-metaprog/src
diff options
context:
space:
mode:
authorKOBAYASHI Shuji <[email protected]>2019-03-17 16:58:31 +0900
committerKOBAYASHI Shuji <[email protected]>2019-03-17 16:58:31 +0900
commitb588e5a5b7cfc0e7a1c84c235a0f5daa5bf83a47 (patch)
tree3452bf56f464cf3556d63782696c42b2bbb4880e /mrbgems/mruby-metaprog/src
parent15b6499c8b9197e885713a7896eaf45419fbef47 (diff)
downloadmruby-b588e5a5b7cfc0e7a1c84c235a0f5daa5bf83a47.tar.gz
mruby-b588e5a5b7cfc0e7a1c84c235a0f5daa5bf83a47.zip
Fix class/instance variable name validation
- `@@?` etc are invalid class variable name. - `@1` etc are invalid instance variable name.
Diffstat (limited to 'mrbgems/mruby-metaprog/src')
-rw-r--r--mrbgems/mruby-metaprog/src/metaprog.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/mrbgems/mruby-metaprog/src/metaprog.c b/mrbgems/mruby-metaprog/src/metaprog.c
index 75913dab5..0aafb4c34 100644
--- a/mrbgems/mruby-metaprog/src/metaprog.c
+++ b/mrbgems/mruby-metaprog/src/metaprog.c
@@ -403,7 +403,8 @@ mod_define_singleton_method(mrb_state *mrb, mrb_value self)
static mrb_bool
cv_name_p(mrb_state *mrb, const char *name, mrb_int len)
{
- return len > 2 && name[0] == '@' && name[1] == '@';
+ return len > 2 && name[0] == '@' && name[1] == '@' &&
+ !ISDIGIT(name[2]) && mrb_ident_p(name+2, len-2);
}
static void