summaryrefslogtreecommitdiff
path: root/variable.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-08-23 06:00:31 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-08-23 06:00:31 +0000
commit91866217e79574e43e130a462db25a81a976ef61 (patch)
treebcfdbd826fa9bed6a84553f28d9d67370faa6758 /variable.c
parent3b0216fd901c61f278f5cf46a0f14f86d1f0151f (diff)
* eval.c (is_defined): should not dump core for "defined?(())".
* eval.c (umethod_bind): recv can be an instance of descender of oklass if oklass is a Module. * hash.c (rb_hash_equal): check identiry equality first. * variable.c (mod_av_set): detect constant overriding for built-in classes/modules. * marshal.c (w_object): should retrieve __member__ data from non-singleton class. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_6@1706 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'variable.c')
-rw-r--r--variable.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/variable.c b/variable.c
index c05fc11a99..2347c1e55f 100644
--- a/variable.c
+++ b/variable.c
@@ -1267,8 +1267,11 @@ mod_av_set(klass, id, val, isconst)
if (!RCLASS(klass)->iv_tbl) {
RCLASS(klass)->iv_tbl = st_init_numtable();
}
- else if (isconst && st_lookup(RCLASS(klass)->iv_tbl, id, 0)) {
- rb_warn("already initialized %s %s", dest, rb_id2name(id));
+ else if (isconst) {
+ if (st_lookup(RCLASS(klass)->iv_tbl, id, 0) ||
+ (klass == rb_cObject && st_lookup(rb_class_tbl, id, 0))) {
+ rb_warn("already initialized %s %s", dest, rb_id2name(id));
+ }
}
st_insert(RCLASS(klass)->iv_tbl, id, val);