summaryrefslogtreecommitdiff
path: root/variable.c
diff options
context:
space:
mode:
Diffstat (limited to 'variable.c')
-rw-r--r--variable.c51
1 files changed, 50 insertions, 1 deletions
diff --git a/variable.c b/variable.c
index 3885693d9a..8ed31ca812 100644
--- a/variable.c
+++ b/variable.c
@@ -1054,8 +1054,8 @@ rb_autoload_load(id)
st_delete(autoload_tbl, &id, &modname);
module = rb_str_new2(modname);
- FL_UNSET(module, FL_TAINT);
free(modname);
+ FL_UNSET(module, FL_TAINT);
rb_f_require(Qnil, module);
}
@@ -1395,6 +1395,55 @@ rb_cvar_defined(klass, id)
return Qfalse;
}
+int
+rb_cvar_defined_singleton(obj, id)
+ VALUE obj;
+ ID id;
+{
+ switch (TYPE(obj)) {
+ case T_MODULE:
+ case T_CLASS:
+ break;
+ default:
+ obj = CLASS_OF(obj);
+ break;
+ }
+ return rb_cvar_defined(obj, id);
+}
+
+void
+rb_cvar_set_singleton(obj, id, value)
+ VALUE obj;
+ ID id;
+ VALUE value;
+{
+ switch (TYPE(obj)) {
+ case T_MODULE:
+ case T_CLASS:
+ break;
+ default:
+ obj = CLASS_OF(obj);
+ break;
+ }
+ rb_cvar_set(obj, id, value);
+}
+
+VALUE
+rb_cvar_get_singleton(obj, id)
+ VALUE obj;
+ ID id;
+{
+ switch (TYPE(obj)) {
+ case T_MODULE:
+ case T_CLASS:
+ break;
+ default:
+ obj = CLASS_OF(obj);
+ break;
+ }
+ return rb_cvar_get(obj, id);
+}
+
void
rb_cv_set(klass, name, val)
VALUE klass;