summaryrefslogtreecommitdiff
path: root/mysys
diff options
context:
space:
mode:
authorNirbhay Choubey <nirbhay@mariadb.com>2016-08-10 10:34:54 -0400
committerNirbhay Choubey <nirbhay@mariadb.com>2016-08-10 10:34:54 -0400
commit38a0def80588dd8a093af3e225101365c74e0faa (patch)
tree57ac2c3d59b2e7fefc37fdc9763715ee74d90ca2 /mysys
parent44e3046d3b09a21e21295979d6ddad9f332ebadd (diff)
parent5ad02062d928cccbd29c0a2db6f0f7ceb33195d1 (diff)
downloadmariadb-git-38a0def80588dd8a093af3e225101365c74e0faa.tar.gz
Merge tag 'mariadb-5.5.51' into 5.5-galera
Diffstat (limited to 'mysys')
-rw-r--r--mysys/my_context.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/mysys/my_context.c b/mysys/my_context.c
index 01d6f404627..5ddb2ccd566 100644
--- a/mysys/my_context.c
+++ b/mysys/my_context.c
@@ -698,30 +698,27 @@ my_context_destroy(struct my_context *c)
int
my_context_spawn(struct my_context *c, void (*f)(void *), void *d)
{
- void *current_fiber;
c->user_func= f;
c->user_arg= d;
+ return my_context_continue(c);
+}
+
+int
+my_context_continue(struct my_context *c)
+{
/*
This seems to be a common trick to run ConvertThreadToFiber() only on the
first occurence in a thread, in a way that works on multiple Windows
versions.
*/
- current_fiber= GetCurrentFiber();
+ void *current_fiber= GetCurrentFiber();
if (current_fiber == NULL || current_fiber == (void *)0x1e00)
current_fiber= ConvertThreadToFiber(c);
c->app_fiber= current_fiber;
DBUG_SWAP_CODE_STATE(&c->dbug_state);
SwitchToFiber(c->lib_fiber);
DBUG_SWAP_CODE_STATE(&c->dbug_state);
- return c->return_value;
-}
-int
-my_context_continue(struct my_context *c)
-{
- DBUG_SWAP_CODE_STATE(&c->dbug_state);
- SwitchToFiber(c->lib_fiber);
- DBUG_SWAP_CODE_STATE(&c->dbug_state);
return c->return_value;
}