summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNicolas "Pixel" Noble <pixel@nobis-crew.org>2013-08-05 02:44:56 +0200
committerNicolas "Pixel" Noble <pixel@nobis-crew.org>2013-08-05 02:44:56 +0200
commitf29524bb7a37db02f5c98854f76e855dbafa6575 (patch)
tree276689d53ec79cf88f7c9a4aabaa919db823adad /src
parentc6518eb6e1caa68cdf0dc242d52cfc172b96efdc (diff)
Relaxing the simple context rules a bit.
Diffstat (limited to 'src')
-rw-r--r--src/BLua.cc2
-rw-r--r--src/Task.cc1
2 files changed, 2 insertions, 1 deletions
diff --git a/src/BLua.cc b/src/BLua.cc
index 7eda510..2bc726e 100644
--- a/src/BLua.cc
+++ b/src/BLua.cc
@@ -870,7 +870,7 @@ bool Balau::Lua::yieldC() throw (GeneralException) {
Future<int> * p = (Future<int> *) touserdata(-2);
if (p->m_ranOnce)
- throw EAgain(p->m_evt);
+ Task::operationYield(p->m_evt, Task::STACKLESS);
resumeC();
return yieldC();
diff --git a/src/Task.cc b/src/Task.cc
index ed03532..345d310 100644
--- a/src/Task.cc
+++ b/src/Task.cc
@@ -301,6 +301,7 @@ void Balau::Task::operationYield(Events::BaseEvent * evt, enum OperationYieldTyp
return;
if ((yieldType != SIMPLE) && t->m_okayToEAgain && !gotSignal && doEAgain) {
+ AAssert(!t->m_cannotEAgain, "task at %p in simple context mode can't EAgain", t);
Printer::elog(E_TASK, "operation is throwing an EAgain exception with event %p", evt);
throw EAgain(evt);
}