Revision
4379
Author
lsansonetti@apple.com
Date
2010-07-24 11:58:05 -0700 (Sat, 24 Jul 2010)

Log Message

fix a crash when yielding a block inside a loop in a thread (#620, patch contributed by watson1978 at gmail.com)

Modified Paths

Diff

Modified: MacRuby/trunk/dispatcher.cpp (4378 => 4379)


--- MacRuby/trunk/dispatcher.cpp	2010-07-24 15:44:15 UTC (rev 4378)
+++ MacRuby/trunk/dispatcher.cpp	2010-07-24 18:58:05 UTC (rev 4379)
@@ -1210,7 +1210,9 @@
 	}
 	~Finally() {
 	    vm->add_current_block(b);
-	    b->flags &= ~VM_BLOCK_THREAD;
+	    if (vm == RoxorVM::main) {
+		b->flags &= ~VM_BLOCK_THREAD;
+	    }
 	}
     } finalizer(vm, b);
 
@@ -1338,7 +1340,7 @@
     }
     else {
 	assert(b->dvars_size == dvars_size);
-	assert((b->flags & flags) == (flags & ~VM_BLOCK_THREAD));
+	assert((b->flags & flags) == flags);
     }
 
     b->proc = Qnil;