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 | |
| parent | 40f184e52b2903b7ff1caed5c104b9d84e2f0d52 (diff) | |
| download | STC-modified-00313bfa4f448253ac95640ed962130ec3d14b19.tar.gz STC-modified-00313bfa4f448253ac95640ed962130ec3d14b19.zip | |
Finish fixes in coroutine.h.
| -rw-r--r-- | include/stc/algo/coroutine.h | 7 | ||||
| -rw-r--r-- | misc/examples/coroutines.c | 2 |
2 files changed, 3 insertions, 6 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 diff --git a/misc/examples/coroutines.c b/misc/examples/coroutines.c index d3295102..120f11b8 100644 --- a/misc/examples/coroutines.c +++ b/misc/examples/coroutines.c @@ -62,6 +62,4 @@ int main(void) { while (iterate(&iter, &fib)) printf("%d %d. Fib: %lld\n", iter.x, iter.y, fib.a); - - puts(""); } |
