summaryrefslogtreecommitdiff
path: root/variable.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-08-28 09:53:42 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-08-28 09:53:42 +0000
commit0a2f8b61d47116a2f2e17f6026fd7f17c2f15878 (patch)
tree04d1097b4a3e8e795f16306fe9f350a57a0f0057 /variable.c
parentdf9d49d0881d9596b9b7d23dbd42950d5048bd9d (diff)
matz
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@906 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
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;