Commit 40a2e968 authored by guilhem@mysql.com's avatar guilhem@mysql.com

new static archive_inited variable, so that archive_db_end() will do something...

new static archive_inited variable, so that archive_db_end() will do something only if archive_db_init() was run before
(protection against destroying uninited mutex in the case where mysqld fails early at startup (before archive_db_init() was called)
and then calls archive_db_end() to clean up).
parent 9ba73923
...@@ -114,6 +114,8 @@ ...@@ -114,6 +114,8 @@
data - The data is stored in a "row +blobs" format. data - The data is stored in a "row +blobs" format.
*/ */
/* If the archive storage engine has been inited */
static bool archive_inited= 0;
/* Variables for archive share methods */ /* Variables for archive share methods */
pthread_mutex_t archive_mutex; pthread_mutex_t archive_mutex;
static HASH archive_open_tables; static HASH archive_open_tables;
...@@ -157,6 +159,7 @@ static byte* archive_get_key(ARCHIVE_SHARE *share,uint *length, ...@@ -157,6 +159,7 @@ static byte* archive_get_key(ARCHIVE_SHARE *share,uint *length,
bool archive_db_init() bool archive_db_init()
{ {
archive_inited= 1;
VOID(pthread_mutex_init(&archive_mutex, MY_MUTEX_INIT_FAST)); VOID(pthread_mutex_init(&archive_mutex, MY_MUTEX_INIT_FAST));
return (hash_init(&archive_open_tables, system_charset_info, 32, 0, 0, return (hash_init(&archive_open_tables, system_charset_info, 32, 0, 0,
(hash_get_key) archive_get_key, 0, 0)); (hash_get_key) archive_get_key, 0, 0));
...@@ -176,8 +179,12 @@ bool archive_db_init() ...@@ -176,8 +179,12 @@ bool archive_db_init()
bool archive_db_end() bool archive_db_end()
{ {
hash_free(&archive_open_tables); if (archive_inited)
VOID(pthread_mutex_destroy(&archive_mutex)); {
hash_free(&archive_open_tables);
VOID(pthread_mutex_destroy(&archive_mutex));
}
archive_inited= 0;
return FALSE; return FALSE;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment