Commit 5af0cbc7 authored by unknown's avatar unknown
Browse files

apply holyfoot's patch for BUG#25895

parent d5ada3e1
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -3084,7 +3084,13 @@ class User_level_lock
  int count;
  bool locked;
  pthread_cond_t cond;
#ifndef EMBEDDED_LIBRARY
  pthread_t thread;
  void set_thread(THD *thd) { thread= thd->real_id; }
#else
  THD       *thread;
  void set_thread(THD *thd) { thread= thd; }
#endif /*EMBEDDED_LIBRARY*/
  ulong thread_id;

  User_level_lock(const char *key_arg,uint length, ulong id) 
@@ -3238,7 +3244,7 @@ void debug_sync_point(const char* lock_name, uint lock_timeout)
  else
  {
    ull->locked=1;
    ull->thread=thd->real_id;
    ull->set_thread(thd);
    thd->ull=ull;
  }
  pthread_mutex_unlock(&LOCK_user_locks);
@@ -3313,7 +3319,7 @@ longlong Item_func_get_lock::val_int()
      null_value=1;				// Probably out of memory
      return 0;
    }
    ull->thread=thd->real_id;
    ull->set_thread(thd);
    thd->ull=ull;
    pthread_mutex_unlock(&LOCK_user_locks);
    return 1;					// Got new lock
@@ -3354,7 +3360,7 @@ longlong Item_func_get_lock::val_int()
  else                                          // We got the lock
  {
    ull->locked=1;
    ull->thread=thd->real_id;
    ull->set_thread(thd);
    ull->thread_id= thd->thread_id;
    thd->ull=ull;
    error=0;
@@ -3403,7 +3409,7 @@ longlong Item_func_release_lock::val_int()
  else
  {
#ifdef EMBEDDED_LIBRARY
    if (ull->locked && pthread_equal(current_thd->real_id,ull->thread))
    if (ull->locked && (current_thd == ull->thread))
#else
    if (ull->locked && pthread_equal(pthread_self(),ull->thread))
#endif