[macruby-changes] [2999] MacRuby/trunk/vm.cpp

source_changes at macosforge.org source_changes at macosforge.org
Fri Nov 13 00:01:02 PST 2009


Revision: 2999
          http://trac.macosforge.org/projects/ruby/changeset/2999
Author:   lsansonetti at apple.com
Date:     2009-11-13 00:00:58 -0800 (Fri, 13 Nov 2009)
Log Message:
-----------
fixed a class method preparation bug when the current VM class is a metaclass + misc cleanup

Modified Paths:
--------------
    MacRuby/trunk/vm.cpp

Modified: MacRuby/trunk/vm.cpp
===================================================================
--- MacRuby/trunk/vm.cpp	2009-11-13 07:59:31 UTC (rev 2998)
+++ MacRuby/trunk/vm.cpp	2009-11-13 08:00:58 UTC (rev 2999)
@@ -1176,6 +1176,7 @@
     else {
 	check_if_module(outer);
 	val = rb_vm_const_lookup(outer, path, lexical_lookup, false);
+	assert(val != Qundef);
 	cache->outer = outer;
 	cache->val = val;
     }
@@ -1812,7 +1813,7 @@
 	if (k != NULL) {
 	    const bool meta = class_isMetaClass(klass);
 	    klass = k;
-	    if (meta) {
+	    if (meta && !class_isMetaClass(klass)) {
 		klass = *(Class *)klass;
 	    }
 	}
@@ -3595,7 +3596,7 @@
 extern "C"
 VALUE
 rb_vm_run_under(VALUE klass, VALUE self, const char *fname, NODE *node,
-		rb_vm_binding_t *binding, bool inside_eval)
+	rb_vm_binding_t *binding, bool inside_eval)
 {
     RoxorVM *vm = GET_VM();
 
@@ -3608,10 +3609,8 @@
     }
     Class old_class = GET_VM()->get_current_class();
     bool old_dynamic_class = RoxorCompiler::shared->is_dynamic_class();
-    if (klass != 0) {
-	vm->set_current_class((Class)klass);
-	RoxorCompiler::shared->set_dynamic_class(true);
-    }
+    vm->set_current_class((Class)klass);
+    RoxorCompiler::shared->set_dynamic_class(true);
 
     vm->add_current_block(binding != NULL ? binding->block : NULL);
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20091113/77dfd3dd/attachment.html>


More information about the macruby-changes mailing list