summaryrefslogtreecommitdiffstats
path: root/src/util/support/threads.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/support/threads.c')
-rw-r--r--src/util/support/threads.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/util/support/threads.c b/src/util/support/threads.c
index bef4264aa..51ad78814 100644
--- a/src/util/support/threads.c
+++ b/src/util/support/threads.c
@@ -312,8 +312,21 @@ int k5_key_delete (k5_key_t keynum)
#else /* POSIX */
- /* Not written yet -- resource leak! */
- /* abort(); */
+ {
+ int err;
+
+ /* XXX RESOURCE LEAK:
+
+ Need to destroy the allocated objects first! */
+
+ err = k5_mutex_lock(&key_lock);
+ if (err == 0) {
+ assert(destructors_set[keynum] == 1);
+ destructors_set[keynum] = 0;
+ destructors[keynum] = NULL;
+ k5_mutex_unlock(&key_lock);
+ }
+ }
#endif
@@ -336,6 +349,10 @@ int krb5int_thread_support_init (void)
{
int err;
+#ifdef SHOW_INITFINI_FUNCS
+ printf("krb5int_thread_support_init\n");
+#endif
+
#ifdef DEBUG_THREADS_STATS
/* stats_logfile = stderr; */
stats_logfile = fopen("/dev/tty", "w+");
@@ -378,6 +395,10 @@ void krb5int_thread_support_fini (void)
if (! INITIALIZER_RAN (krb5int_thread_support_init))
return;
+#ifdef SHOW_INITFINI_FUNCS
+ printf("krb5int_thread_support_fini\n");
+#endif
+
#ifndef ENABLE_THREADS
/* Do nothing. */