diff options
| author | Tyge Løvset <[email protected]> | 2023-02-25 13:22:03 +0100 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2023-02-25 13:22:03 +0100 |
| commit | 00313bfa4f448253ac95640ed962130ec3d14b19 (patch) | |
| tree | a2a61bf87a4a7fab0773be10b3849141cd3d5d66 /include | |
| parent | 40f184e52b2903b7ff1caed5c104b9d84e2f0d52 (diff) | |
| download | STC-modified-00313bfa4f448253ac95640ed962130ec3d14b19.tar.gz STC-modified-00313bfa4f448253ac95640ed962130ec3d14b19.zip | |
Finish fixes in coroutine.h.
Diffstat (limited to 'include')
| -rw-r--r-- | include/stc/algo/coroutine.h | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/include/stc/algo/coroutine.h b/include/stc/algo/coroutine.h index 2ac17744..4ba39e63 100644 --- a/include/stc/algo/coroutine.h +++ b/include/stc/algo/coroutine.h @@ -78,14 +78,13 @@ int main(void) { #define cco_yield_coroutine(c, corocall, retval) \ do { \ - *_state = __LINE__; cco_reset(c); \ + *_state = __LINE__; \ c_PASTE(cco, __LINE__): corocall; return retval; \ case __LINE__:; if (cco_alive(c)) goto c_PASTE(cco, __LINE__); \ } while (0) #define cco_final case -1 -#define cco_stop(c) ((c)->cco_state = (c)->cco_state > 0 ? -1 : -2, c) -#define cco_alive(c) ((c)->cco_state >= 0) -#define cco_reset(c) ((c)->cco_state = 0) +#define cco_alive(c) ((c)->cco_state > 0) +#define cco_stop(c) ((c)->cco_state = cco_alive(c) ? -1 : -2, c) #endif |
