summaryrefslogtreecommitdiffstats
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
commit770303d5aa3ccc7bdc7b5c3a0552f96238f04dfe (patch)
tree04d1097b4a3e8e795f16306fe9f350a57a0f0057 /variable.c
parente0f3aab312df60a890524c5b922f0c6525adaf18 (diff)
downloadruby-770303d5aa3ccc7bdc7b5c3a0552f96238f04dfe.tar.gz
ruby-770303d5aa3ccc7bdc7b5c3a0552f96238f04dfe.tar.xz
ruby-770303d5aa3ccc7bdc7b5c3a0552f96238f04dfe.zip
matz
git-svn-id: http://svn.ruby-lang.org/repos/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 3885693d9..8ed31ca81 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;