summaryrefslogtreecommitdiff
path: root/mysys
diff options
context:
space:
mode:
Diffstat (limited to 'mysys')
-rw-r--r--mysys/my_error.c12
-rw-r--r--mysys/my_init.c4
-rw-r--r--mysys/mysys_priv.h2
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);