summaryrefslogtreecommitdiff
path: root/libmysqld/lib_sql.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libmysqld/lib_sql.cc')
-rw-r--r--libmysqld/lib_sql.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc
index d00556c3f17..458af24ce34 100644
--- a/libmysqld/lib_sql.cc
+++ b/libmysqld/lib_sql.cc
@@ -416,11 +416,13 @@ int emb_unbuffered_fetch(MYSQL *mysql, char **row)
static void emb_free_embedded_thd(MYSQL *mysql)
{
THD *thd= (THD*)mysql->thd;
+ mysql_mutex_lock(&LOCK_thread_count);
thd->clear_data_list();
thread_count--;
thd->store_globals();
thd->unlink();
delete thd;
+ mysql_mutex_unlock(&LOCK_thread_count);
my_pthread_setspecific_ptr(THR_THD, 0);
mysql->thd=0;
}
@@ -687,8 +689,10 @@ void *create_embedded_thd(int client_flag)
thd->data_tail= &thd->first_data;
bzero((char*) &thd->net, sizeof(thd->net));
+ mysql_mutex_lock(&LOCK_thread_count);
thread_count++;
threads.append(thd);
+ mysql_mutex_unlock(&LOCK_thread_count);
thd->mysys_var= 0;
return thd;
err: