async_fibre_makecontext was initialise the fibre first and then calling
getcontext(). It should be the other way around because the getcontext
call may overwrite some of the things we just initialised. This didn't
cause an issue on Linux and so the problem went unnoticed. On OS-X it
causes a crash.
Reviewed-by: Rich Salz <rsalz@openssl.org>
}
# define async_fibre_makecontext(c) \
- (async_fibre_init(c) \
- && !getcontext(&(c)->fibre) \
+ (!getcontext(&(c)->fibre) \
+ && async_fibre_init(c) \
&& (makecontext(&(c)->fibre, async_start_func, 0), 1))
# define async_fibre_init_dispatcher(d)