From 00313bfa4f448253ac95640ed962130ec3d14b19 Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Sat, 25 Feb 2023 13:22:03 +0100 Subject: Finish fixes in coroutine.h. --- include/stc/algo/coroutine.h | 7 +++---- 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(""); } -- cgit v1.2.3