diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/stc/algo/coroutine.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/include/stc/algo/coroutine.h b/include/stc/algo/coroutine.h index 5607897a..1c849d49 100644 --- a/include/stc/algo/coroutine.h +++ b/include/stc/algo/coroutine.h @@ -62,8 +62,8 @@ enum { cco_state_done = -2, }; -#define cco_alive(ctx) ((ctx)->cco_state > 0) -#define cco_done(ctx) ((ctx)->cco_state == cco_state_done) +#define cco_suspended(ctx) ((ctx)->cco_state > 0) +#define cco_alive(ctx) ((ctx)->cco_state != cco_state_done) #define cco_begin(ctx) \ int *_state = &(ctx)->cco_state; \ @@ -91,9 +91,9 @@ enum { do { \ *_state = __LINE__; \ do { \ - corocall; if (cco_alive(ctx)) return retval; \ + corocall; if (cco_suspended(ctx)) return retval; \ case __LINE__:; \ - } while (!cco_done(ctx)); \ + } while (cco_alive(ctx)); \ } while (0) #define cco_final \ |
