Commit a6b225ba authored by unknown's avatar unknown
Browse files

charset.c:

  Bug#12109 possible locking bug in init_available_charset
  Recheck charset_initialized inside locked code,
  to garantee two threads are not entering
  consequently.


mysys/charset.c:
  Bug#12109 possible locking bug in init_available_charset
  Recheck charset_initialized inside locked code,
  to garantee two threads are not entering
  consequently.
parent bdc0c671
Loading
Loading
Loading
Loading
+18 −16
Original line number Diff line number Diff line
@@ -383,7 +383,8 @@ static my_bool init_available_charsets(myf myflags)
      while we may changing the cs_info_table
    */
    pthread_mutex_lock(&THR_LOCK_charset);

    if (!charset_initialized)
    {
      bzero(&all_charsets,sizeof(all_charsets));
      init_compiled_charsets(myflags);
      
@@ -403,6 +404,7 @@ static my_bool init_available_charsets(myf myflags)
      strmov(get_charsets_dir(fname), MY_CHARSET_INDEX);
      error= my_read_charset_file(fname,myflags);
      charset_initialized=1;
    }
    pthread_mutex_unlock(&THR_LOCK_charset);
  }
  return error;