Modified: MacRuby/trunk/vm.cpp (4461 => 4462)
--- MacRuby/trunk/vm.cpp 2010-08-24 16:14:21 UTC (rev 4461)
+++ MacRuby/trunk/vm.cpp 2010-08-24 21:50:09 UTC (rev 4462)
@@ -1273,17 +1273,19 @@
void
RoxorCore::set_outer(Class klass, Class mod)
{
- struct rb_vm_outer *mod_outer = get_outer(mod);
- 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);
+ if (klass != mod) {
+ struct rb_vm_outer *mod_outer = get_outer(mod);
+ 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;
}
- 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;
}
}