From 504020beda378a1b63fcab638dc052609d24288f Mon Sep 17 00:00:00 2001 From: James Roseborough Date: Tue, 23 Oct 2007 00:49:52 +0000 Subject: [PATCH] Fix coroutine.wrap() error propogation. --- src/addon/java/lua/addon/luacompat/CoroutinesLib.java | 5 ++++- src/test/res/coroutines.lua | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/addon/java/lua/addon/luacompat/CoroutinesLib.java b/src/addon/java/lua/addon/luacompat/CoroutinesLib.java index 9017c2b6..be2f6ef4 100644 --- a/src/addon/java/lua/addon/luacompat/CoroutinesLib.java +++ b/src/addon/java/lua/addon/luacompat/CoroutinesLib.java @@ -85,7 +85,10 @@ public class CoroutinesLib extends LFunction { case 7: { // wrapped resume LThread t = this.thread; t.resumeFrom( vm, vm.gettop()-1 ); - vm.remove(1); + if ( vm.toboolean(1) ) + vm.remove(1); + else + vm.error( vm.tostring(2), 0 ); return false; } } diff --git a/src/test/res/coroutines.lua b/src/test/res/coroutines.lua index cf3c2196..2cfa3dbc 100644 --- a/src/test/res/coroutines.lua +++ b/src/test/res/coroutines.lua @@ -5,7 +5,7 @@ function printrunning() print("running is not nil") end end - + function foo (a) print("foo", a) return coroutine.yield(2*a)