[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