mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* variable.c, intern.h: Add rb_const_remove().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@27051 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
2292de78b1
commit
c36f4b164b
3 changed files with 16 additions and 2 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
Fri Mar 26 03:58:37 2010 Akinori MUSHA <knu@iDaemons.org>
|
||||||
|
|
||||||
|
* variable.c, intern.h: Add rb_const_remove().
|
||||||
|
|
||||||
Fri Mar 26 03:09:30 2010 Akinori MUSHA <knu@iDaemons.org>
|
Fri Mar 26 03:09:30 2010 Akinori MUSHA <knu@iDaemons.org>
|
||||||
|
|
||||||
* object.c (rb_obj_singleton_class): new method
|
* object.c (rb_obj_singleton_class): new method
|
||||||
|
|
1
intern.h
1
intern.h
|
@ -521,6 +521,7 @@ VALUE rb_const_get _((VALUE, ID));
|
||||||
VALUE rb_const_get_at _((VALUE, ID));
|
VALUE rb_const_get_at _((VALUE, ID));
|
||||||
VALUE rb_const_get_from _((VALUE, ID));
|
VALUE rb_const_get_from _((VALUE, ID));
|
||||||
void rb_const_set _((VALUE, ID, VALUE));
|
void rb_const_set _((VALUE, ID, VALUE));
|
||||||
|
VALUE rb_const_remove _((VALUE, ID));
|
||||||
VALUE rb_mod_constants _((VALUE));
|
VALUE rb_mod_constants _((VALUE));
|
||||||
VALUE rb_mod_const_missing _((VALUE,VALUE));
|
VALUE rb_mod_const_missing _((VALUE,VALUE));
|
||||||
VALUE rb_cvar_defined _((VALUE, ID));
|
VALUE rb_cvar_defined _((VALUE, ID));
|
||||||
|
|
13
variable.c
13
variable.c
|
@ -1479,12 +1479,21 @@ rb_mod_remove_const(mod, name)
|
||||||
VALUE mod, name;
|
VALUE mod, name;
|
||||||
{
|
{
|
||||||
const ID id = rb_to_id(name);
|
const ID id = rb_to_id(name);
|
||||||
VALUE val;
|
|
||||||
st_data_t v, n = id;
|
|
||||||
|
|
||||||
if (!rb_is_const_id(id)) {
|
if (!rb_is_const_id(id)) {
|
||||||
rb_name_error(id, "`%s' is not allowed as a constant name", rb_id2name(id));
|
rb_name_error(id, "`%s' is not allowed as a constant name", rb_id2name(id));
|
||||||
}
|
}
|
||||||
|
return rb_const_remove(mod, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
VALUE
|
||||||
|
rb_const_remove(mod, id)
|
||||||
|
VALUE mod;
|
||||||
|
ID id;
|
||||||
|
{
|
||||||
|
VALUE val;
|
||||||
|
st_data_t v, n = id;
|
||||||
|
|
||||||
if (!OBJ_TAINTED(mod) && rb_safe_level() >= 4)
|
if (!OBJ_TAINTED(mod) && rb_safe_level() >= 4)
|
||||||
rb_raise(rb_eSecurityError, "Insecure: can't remove constant");
|
rb_raise(rb_eSecurityError, "Insecure: can't remove constant");
|
||||||
if (OBJ_FROZEN(mod)) rb_error_frozen("class/module");
|
if (OBJ_FROZEN(mod)) rb_error_frozen("class/module");
|
||||||
|
|
Loading…
Add table
Reference in a new issue