summaryrefslogtreecommitdiff
path: root/variable.c
diff options
context:
space:
mode:
Diffstat (limited to 'variable.c')
-rw-r--r--variable.c171
1 files changed, 47 insertions, 124 deletions
diff --git a/variable.c b/variable.c
index b29ce55cce..fef84f7128 100644
--- a/variable.c
+++ b/variable.c
@@ -44,7 +44,7 @@ fc_i(key, value, res)
VALUE path;
char *name;
- if (!rb_is_shared_id(key)) return ST_CONTINUE;
+ if (!rb_is_const_id(key)) return ST_CONTINUE;
name = rb_id2name(key);
if (res->path) {
@@ -226,7 +226,7 @@ rb_autoload_id(id, filename)
ID id;
const char *filename;
{
- if (!rb_is_shared_id(id)) {
+ if (!rb_is_const_id(id)) {
rb_raise(rb_eNameError, "autoload must be constant name",
rb_id2name(id));
}
@@ -858,7 +858,7 @@ rb_ivar_get(obj, id)
{
VALUE val;
- if (!FL_TEST(obj, FL_TAINT) && rb_safe_level() >= 4)
+ if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4)
rb_raise(rb_eSecurityError, "Insecure: can't access instance variable");
switch (TYPE(obj)) {
case T_OBJECT:
@@ -873,7 +873,7 @@ rb_ivar_get(obj, id)
break;
}
if (ruby_verbose) {
- rb_warning("instance var %s not initialized", rb_id2name(id));
+ rb_warning("instance variable %s not initialized", rb_id2name(id));
}
return Qnil;
}
@@ -884,7 +884,7 @@ rb_ivar_set(obj, id, val)
ID id;
VALUE val;
{
- if (!FL_TEST(obj, FL_TAINT) && rb_safe_level() >= 4)
+ if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4)
rb_raise(rb_eSecurityError, "Insecure: can't modify instance variable");
switch (TYPE(obj)) {
case T_OBJECT:
@@ -936,10 +936,11 @@ VALUE
rb_obj_instance_variables(obj)
VALUE obj;
{
- VALUE ary = rb_ary_new();
+ VALUE ary;
- if (!FL_TEST(obj, FL_TAINT) && rb_safe_level() >= 4)
+ if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4)
rb_raise(rb_eSecurityError, "Insecure: can't get metainfo");
+ ary = rb_ary_new();
switch (TYPE(obj)) {
case T_OBJECT:
case T_CLASS:
@@ -969,7 +970,7 @@ rb_obj_remove_instance_variable(obj, name)
VALUE val = Qnil;
ID id = rb_to_id(name);
- if (!FL_TEST(obj, FL_TAINT) && rb_safe_level() >= 4)
+ if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4)
rb_raise(rb_eSecurityError, "Insecure: can't modify instance variable");
if (!rb_is_instance_id(id)) {
rb_raise(rb_eNameError, "`%s' is not an instance variable",
@@ -993,7 +994,7 @@ rb_obj_remove_instance_variable(obj, name)
}
VALUE
-rb_shvar_get_at(klass, id)
+rb_const_get_at(klass, id)
VALUE klass;
ID id;
{
@@ -1003,7 +1004,7 @@ rb_shvar_get_at(klass, id)
return value;
}
if (klass == rb_cObject) {
- return rb_shvar_get(klass, id);
+ return rb_const_get(klass, id);
}
rb_raise(rb_eNameError, "uninitialized constant %s::%s",
RSTRING(rb_class_path(klass))->ptr,
@@ -1012,16 +1013,21 @@ rb_shvar_get_at(klass, id)
}
-VALUE
-rb_const_get_at(klass, id)
- VALUE klass;
+void
+rb_autoload_load(id)
ID id;
{
- return rb_shvar_get_at(klass, id);
+ char *modname;
+ VALUE module;
+
+ st_delete(autoload_tbl, &id, &modname);
+ module = rb_str_new2(modname);
+ free(modname);
+ rb_f_require(Qnil, module);
}
VALUE
-rb_shvar_get(klass, id)
+rb_const_get(klass, id)
VALUE klass;
ID id;
{
@@ -1036,7 +1042,7 @@ rb_shvar_get(klass, id)
tmp = RCLASS(tmp)->super;
}
if (BUILTIN_TYPE(klass) == T_MODULE) {
- return rb_shvar_get(rb_cObject, id);
+ return rb_const_get(rb_cObject, id);
}
/* pre-defined class */
@@ -1044,14 +1050,8 @@ rb_shvar_get(klass, id)
/* autoload */
if (autoload_tbl && st_lookup(autoload_tbl, id, 0)) {
- char *modname;
- VALUE module;
-
- st_delete(autoload_tbl, &id, &modname);
- module = rb_str_new2(modname);
- free(modname);
- rb_f_require(Qnil, module);
- return rb_shvar_get(klass, id);
+ rb_autoload_load(id);
+ return rb_const_get(klass, id);
}
/* Uninitialized constant */
@@ -1065,21 +1065,13 @@ rb_shvar_get(klass, id)
return Qnil; /* not reached */
}
-VALUE
-rb_const_get(klass, id)
- VALUE klass;
- ID id;
-{
- return rb_shvar_get(klass, id);
-}
-
static int
sv_i(key, value, ary)
ID key;
VALUE value;
VALUE ary;
{
- if (rb_is_shared_id(key)) {
+ if (rb_is_const_id(key)) {
VALUE kval = rb_str_new2(rb_id2name(key));
if (!rb_ary_includes(ary, kval)) {
rb_ary_push(ary, kval);
@@ -1089,20 +1081,22 @@ sv_i(key, value, ary)
}
VALUE
-rb_mod_remove_shvar(mod, name)
+rb_mod_remove_const(mod, name)
VALUE mod, name;
{
ID id = rb_to_id(name);
VALUE val;
- if (!rb_is_shared_id(id)) {
- rb_raise(rb_eNameError, "`%s' is not shared variable", rb_id2name(id));
+ if (!OBJ_TAINTED(mod) && rb_safe_level() >= 4)
+ rb_raise(rb_eSecurityError, "Insecure: can't remove constant");
+ if (!rb_is_const_id(id)) {
+ rb_raise(rb_eNameError, "`%s' is not constant", rb_id2name(id));
}
if (RCLASS(mod)->iv_tbl && st_delete(ROBJECT(mod)->iv_tbl, &id, &val)) {
return val;
}
- if (rb_shvar_defined_at(mod, id)) {
+ if (rb_const_defined_at(mod, id)) {
rb_raise(rb_eNameError, "cannot remove %s::%s",
rb_class2name(mod), rb_id2name(id));
}
@@ -1111,13 +1105,6 @@ rb_mod_remove_shvar(mod, name)
return Qnil; /* not reached */
}
-VALUE
-rb_mod_remove_const(mod, name)
- VALUE mod, name;
-{
- return rb_mod_remove_shvar(mod, name);
-}
-
static int
autoload_i(key, name, ary)
ID key;
@@ -1132,10 +1119,10 @@ autoload_i(key, name, ary)
}
VALUE
-rb_mod_shvar_at(mod, ary)
+rb_mod_const_at(mod, ary)
VALUE mod, ary;
{
- if (!FL_TEST(mod, FL_TAINT) && rb_safe_level() >= 4)
+ if (!OBJ_TAINTED(mod) && rb_safe_level() >= 4)
rb_raise(rb_eSecurityError, "Insecure: can't get metainfo");
if (RCLASS(mod)->iv_tbl) {
st_foreach(RCLASS(mod)->iv_tbl, sv_i, ary);
@@ -1150,50 +1137,28 @@ rb_mod_shvar_at(mod, ary)
}
VALUE
-rb_mod_const_at(mod, ary)
- VALUE mod, ary;
-{
- return rb_mod_shvar_at(mod, ary);
-}
-
-VALUE
-rb_mod_shvar_of(mod, ary)
+rb_mod_const_of(mod, ary)
VALUE mod;
VALUE ary;
{
- rb_mod_shvar_at(mod, ary);
+ rb_mod_const_at(mod, ary);
for (;;) {
mod = RCLASS(mod)->super;
if (!mod) break;
- rb_mod_shvar_at(mod, ary);
+ rb_mod_const_at(mod, ary);
}
return ary;
}
VALUE
-rb_mod_const_of(mod, ary)
- VALUE mod;
- VALUE ary;
-{
- return rb_mod_shvar_of(mod, ary);
-}
-
-VALUE
-rb_mod_shvars(mod)
- VALUE mod;
-{
- return rb_mod_shvar_of(mod, rb_ary_new());
-}
-
-VALUE
rb_mod_constants(mod)
VALUE mod;
{
- return rb_mod_shvars(mod);
+ return rb_mod_const_of(mod, rb_ary_new());
}
int
-rb_shvar_defined_at(klass, id)
+rb_const_defined_at(klass, id)
VALUE klass;
ID id;
{
@@ -1201,20 +1166,12 @@ rb_shvar_defined_at(klass, id)
return Qtrue;
}
if (klass == rb_cObject) {
- return rb_shvar_defined(klass, id);
+ return rb_const_defined(klass, id);
}
return Qfalse;
}
int
-rb_const_defined_at(klass, id)
- VALUE klass;
- ID id;
-{
- return rb_shvar_defined_at(klass, id);
-}
-
-int
rb_autoload_defined(id)
ID id;
{
@@ -1224,7 +1181,7 @@ rb_autoload_defined(id)
}
int
-rb_shvar_defined(klass, id)
+rb_const_defined(klass, id)
VALUE klass;
ID id;
{
@@ -1237,28 +1194,20 @@ rb_shvar_defined(klass, id)
tmp = RCLASS(tmp)->super;
}
if (BUILTIN_TYPE(klass) == T_MODULE) {
- return rb_shvar_defined(rb_cObject, id);
+ return rb_const_defined(rb_cObject, id);
}
if (st_lookup(rb_class_tbl, id, 0))
return Qtrue;
return rb_autoload_defined(id);
}
-int
-rb_const_defined(klass, id)
- VALUE klass;
- ID id;
-{
- return rb_shvar_defined(klass, id);
-}
-
void
-rb_shvar_set(klass, id, val)
+rb_const_set(klass, id, val)
VALUE klass;
ID id;
VALUE val;
{
- if (!FL_TEST(klass, FL_TAINT) && rb_safe_level() >= 4)
+ if (!OBJ_TAINTED(klass) && rb_safe_level() >= 4)
rb_raise(rb_eSecurityError, "Insecure: can't set constant");
if (!RCLASS(klass)->iv_tbl) {
RCLASS(klass)->iv_tbl = st_init_numtable();
@@ -1268,16 +1217,7 @@ rb_shvar_set(klass, id, val)
}
void
-rb_const_set(klass, id, val)
- VALUE klass;
- ID id;
- VALUE val;
-{
- rb_shvar_set(klass, id, val);
-}
-
-void
-rb_shvar_assign(klass, id, val)
+rb_const_assign(klass, id, val)
VALUE klass;
ID id;
VALUE val;
@@ -1329,19 +1269,10 @@ rb_define_const(klass, name, val)
if (klass == rb_cObject) {
rb_secure(4);
}
- if (!rb_is_shared_id(id)) {
- rb_raise(rb_eNameError, "wrong shared variable name %s", name);
+ if (!rb_is_const_id(id)) {
+ rb_raise(rb_eNameError, "wrong constant name %s", name);
}
- rb_shvar_set(klass, id, val);
-}
-
-void
-rb_define_shvar(klass, name, val)
- VALUE klass;
- const char *name;
- VALUE val;
-{
- rb_define_const(klass, name, val);
+ rb_const_set(klass, id, val);
}
void
@@ -1352,14 +1283,6 @@ rb_define_global_const(name, val)
rb_define_const(rb_cObject, name, val);
}
-void
-rb_define_global_shvar(name, val)
- const char *name;
- VALUE val;
-{
- rb_define_global_const(name, val);
-}
-
VALUE
rb_iv_get(obj, name)
VALUE obj;