[macruby-changes] [1244] MacRuby/branches/experimental
source_changes at macosforge.org
source_changes at macosforge.org
Sat Mar 28 20:32:35 PDT 2009
Revision: 1244
http://trac.macosforge.org/projects/ruby/changeset/1244
Author: lsansonetti at apple.com
Date: 2009-03-28 20:32:31 -0700 (Sat, 28 Mar 2009)
Log Message:
-----------
fixed const lookup from a metaclass
Modified Paths:
--------------
MacRuby/branches/experimental/class.c
MacRuby/branches/experimental/roxor.cpp
Modified: MacRuby/branches/experimental/class.c
===================================================================
--- MacRuby/branches/experimental/class.c 2009-03-29 03:31:28 UTC (rev 1243)
+++ MacRuby/branches/experimental/class.c 2009-03-29 03:32:31 UTC (rev 1244)
@@ -351,8 +351,9 @@
{
if (RCLASS_SINGLETON(klass)) {
static ID attachedId = 0;
- if (attachedId == 0)
+ if (attachedId == 0) {
attachedId = rb_intern("__attached__");
+ }
rb_ivar_set(klass, attachedId, obj);
}
}
@@ -1158,7 +1159,9 @@
case T_CLASS:
case T_MODULE:
klass = *(VALUE *)obj;
+ rb_vm_set_outer(klass, obj);
break;
+
default:
klass = rb_make_metaclass(obj, RBASIC(obj)->klass);
break;
Modified: MacRuby/branches/experimental/roxor.cpp
===================================================================
--- MacRuby/branches/experimental/roxor.cpp 2009-03-29 03:31:28 UTC (rev 1243)
+++ MacRuby/branches/experimental/roxor.cpp 2009-03-29 03:32:31 UTC (rev 1244)
@@ -504,11 +504,17 @@
void set_outer(Class klass, Class mod) {
struct rb_vm_outer *mod_outer = get_outer(mod);
- struct rb_vm_outer *class_outer = (struct rb_vm_outer *)
- malloc(sizeof(struct rb_vm_outer));
- class_outer->klass = klass;
- class_outer->outer = mod_outer;
- outers[klass] = class_outer;
+ struct rb_vm_outer *class_outer = get_outer(klass);
+ if (class_outer == NULL || class_outer->outer != mod_outer) {
+ if (class_outer != NULL) {
+ free(class_outer);
+ }
+ class_outer = (struct rb_vm_outer *)
+ malloc(sizeof(struct rb_vm_outer));
+ class_outer->klass = klass;
+ class_outer->outer = mod_outer;
+ outers[klass] = class_outer;
+ }
}
};
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090328/3d128303/attachment.html>
More information about the macruby-changes
mailing list