Revision: 4462 http://trac.macosforge.org/projects/ruby/changeset/4462 Author: lsansonetti@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; } }
participants (1)
-
source_changes@macosforge.org