[macruby-changes] [4462] MacRuby/trunk/vm.cpp
source_changes at macosforge.org
source_changes at macosforge.org
Tue Aug 24 14:50:12 PDT 2010
Revision: 4462
http://trac.macosforge.org/projects/ruby/changeset/4462
Author: lsansonetti at apple.com
Date: 2010-08-24 14:50:09 -0700 (Tue, 24 Aug 2010)
Log Message:
-----------
avoid mutual recursion while setting outers
Modified Paths:
--------------
MacRuby/trunk/vm.cpp
Modified: MacRuby/trunk/vm.cpp
===================================================================
--- 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;
}
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100824/97f81a0e/attachment.html>
More information about the macruby-changes
mailing list