diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-03-04 06:28:51 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-03-04 06:28:51 +0000 |
commit | 01c637380f24f358c8885c6e942e2b4bd910bfdd (patch) | |
tree | 2cf223151596bf91ab20834fde36c94d1986cce4 /gc.c | |
parent | dc4daa30be8e8d22a3fbadebe61906781d852b11 (diff) | |
download | ruby-01c637380f24f358c8885c6e942e2b4bd910bfdd.tar.gz ruby-01c637380f24f358c8885c6e942e2b4bd910bfdd.tar.xz ruby-01c637380f24f358c8885c6e942e2b4bd910bfdd.zip |
* gc.c (id2ref): fix symbol test.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@10022 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r-- | gc.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -1938,15 +1938,15 @@ id2ref(VALUE obj, VALUE objid) if (ptr == Qfalse) return Qfalse; if (ptr == Qnil) return Qnil; if (FIXNUM_P(ptr)) return (VALUE)ptr; + ptr = objid ^ FIXNUM_FLAG; /* unset FIXNUM_FLAG */ - if ((objid % sizeof(RVALUE)) == (4 << 2)) { - ID symid = objid / sizeof(RVALUE); + if ((ptr % sizeof(RVALUE)) == (4 << 2)) { + ID symid = ptr / sizeof(RVALUE); if (rb_id2name(symid) == 0) rb_raise(rb_eRangeError, "%p is not symbol id value", p0); return ID2SYM(symid); } - ptr = objid ^ FIXNUM_FLAG; /* unset FIXNUM_FLAG */ if (!is_pointer_to_heap((void *)ptr)|| BUILTIN_TYPE(ptr) >= T_BLOCK) { rb_raise(rb_eRangeError, "%p is not id value", p0); } |