diff options
Diffstat (limited to 'mysys')
-rw-r--r-- | mysys/my_error.c | 12 | ||||
-rw-r--r-- | mysys/my_init.c | 4 | ||||
-rw-r--r-- | mysys/mysys_priv.h | 2 |
3 files changed, 17 insertions, 1 deletions
diff --git a/mysys/my_error.c b/mysys/my_error.c index e60c4eb21d7..cc7c28b6207 100644 --- a/mysys/my_error.c +++ b/mysys/my_error.c @@ -252,3 +252,15 @@ const char **my_error_unregister(int first, int last) return errmsgs; } + + +void my_error_unregister_all(void) +{ + struct my_err_head *list, *next; + for (list= my_errmsgs_globerrs.meh_next; list; list= next) + { + next= list->meh_next; + my_free((gptr) list, MYF(0)); + } + my_errmsgs_list= &my_errmsgs_globerrs; +} diff --git a/mysys/my_init.c b/mysys/my_init.c index dca68637161..149ccac531e 100644 --- a/mysys/my_init.c +++ b/mysys/my_init.c @@ -154,6 +154,7 @@ void my_end(int infoflag) } } free_charsets(); + my_error_unregister_all(); my_once_free(); if ((infoflag & MY_GIVE_INFO) || print_info) @@ -208,7 +209,8 @@ Voluntary context switches %ld, Involuntary context switches %ld\n", Check on destroying of mutexes. A few may be left that will get cleaned up by C++ destructors */ - safe_mutex_end(infoflag & MY_GIVE_INFO ? stderr : (FILE *) 0); + safe_mutex_end((infoflag & (MY_GIVE_INFO | MY_CHECK_ERROR)) ? stderr : + (FILE *) 0); #endif /* defined(SAFE_MUTEX) */ #endif /* THREAD */ diff --git a/mysys/mysys_priv.h b/mysys/mysys_priv.h index 89a6d8aa2a7..1d9c2812eb6 100644 --- a/mysys/mysys_priv.h +++ b/mysys/mysys_priv.h @@ -41,3 +41,5 @@ extern pthread_mutex_t THR_LOCK_charset; #ifndef EDQUOT #define EDQUOT (-1) #endif + +void my_error_unregister_all(void); |