Fix bug in async_fibre_makecontext for POSIX
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>
This commit is contained in:
parent
7fecbf6f21
commit
90fa7296c2
@ -97,8 +97,8 @@ static inline int async_fibre_swapcontext(async_fibre *o, async_fibre *n, int r)
|
||||
}
|
||||
|
||||
# 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)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user