summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/stc/algo/coroutine.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/include/stc/algo/coroutine.h b/include/stc/algo/coroutine.h
index 6d502988..59e4cfca 100644
--- a/include/stc/algo/coroutine.h
+++ b/include/stc/algo/coroutine.h
@@ -86,8 +86,10 @@ enum {
#define cco_yield_3(corocall, ctx, retval) \
do { \
*_state = __LINE__; \
- c_PASTE(cco, __LINE__): corocall; if (cco_alive(ctx)) return retval; \
- case __LINE__: if ((ctx)->cco_state >= cco_state_final) goto c_PASTE(cco, __LINE__); \
+ do { \
+ corocall; if (cco_alive(ctx)) return retval; \
+ case __LINE__:; \
+ } while ((ctx)->cco_state >= cco_state_final); \
} while (0)
#define cco_final \