diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2016-11-30 10:36:17 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2016-11-30 10:36:17 +0900 |
| commit | 2bb47addadb3eda796520837c21d694c8d6e3320 (patch) | |
| tree | 57c57252d89435e42f78ad94381f449c517d5a52 /src/symbol.c | |
| parent | f7c0024b8ed4b48e8e6f58df8a9865dcc424a5b0 (diff) | |
| download | mruby-2bb47addadb3eda796520837c21d694c8d6e3320.tar.gz mruby-2bb47addadb3eda796520837c21d694c8d6e3320.zip | |
Prohibit instantiation of immediate objects
Diffstat (limited to 'src/symbol.c')
| -rw-r--r-- | src/symbol.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/symbol.c b/src/symbol.c index 25ae132e1..a3ab05c85 100644 --- a/src/symbol.c +++ b/src/symbol.c @@ -10,6 +10,7 @@ #include <mruby/khash.h> #include <mruby/string.h> #include <mruby/dump.h> +#include <mruby/class.h> /* ------------------------------------------------------ */ typedef struct symbol_name { @@ -481,6 +482,8 @@ mrb_init_symbol(mrb_state *mrb) struct RClass *sym; mrb->symbol_class = sym = mrb_define_class(mrb, "Symbol", mrb->object_class); /* 15.2.11 */ + MRB_SET_INSTANCE_TT(sym, MRB_TT_SYMBOL); + mrb_undef_class_method(mrb, sym, "new"); mrb_define_method(mrb, sym, "===", sym_equal, MRB_ARGS_REQ(1)); /* 15.2.11.3.1 */ mrb_define_method(mrb, sym, "id2name", mrb_sym_to_s, MRB_ARGS_NONE()); /* 15.2.11.3.2 */ |
