[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