+2005-01-17 Jeffrey Altman <jaltman@mit.edu>
+
+ * gss_libinit.c: implement cleanup of mutexes, static vars, etc for Windows
+
2004-07-29 Sam Hartman <hartmans@mit.edu>
* libgssapi_krb5.exports: Add lucid context routines and gss_krb5_set_allowable_enctypes
remove_error_table(&et_k5g_error_table);
remove_error_table(&et_ggss_error_table);
#endif
+ k5_key_delete(K5_KEY_GSS_KRB5_SET_CCACHE_OLD_NAME);
+ k5_key_delete(K5_KEY_GSS_KRB5_CCACHE_NAME);
k5_mutex_destroy(&kg_vdb.mutex);
+ k5_mutex_destroy(&gssint_krb5_keytab_lock);
}
OM_uint32 gssint_initialize_library (void)
+2005-01-17 Jeffrey Altman <jaltman@mit.edu>
+
+ * krb5_libinit.c: implement library cleanup of mutexes, static vars, etc
+
2005-01-04 Jeffrey Altman <jaltman@mit.edu>
* libkrb5.exports: add krb5_is_thread_safe
if (!INITIALIZER_RAN(krb5int_lib_init) || PROGRAM_EXITING())
return;
- krb5int_rc_terminate();
- krb5int_kt_finalize();
+ k5_mutex_destroy(&krb5int_us_time_mutex);
+
krb5int_cc_finalize();
+ krb5int_kt_finalize();
+ krb5int_rc_terminate();
#if defined(_WIN32) || defined(USE_CCAPI)
krb5_stdcc_shutdown();
+2005-01-17 Jeffrey Altman <jaltman@mit.edu>
+
+ * error_message.c: implement library unload cleanup of mutexes
+
2005-01-13 Ken Raeburn <raeburn@mit.edu>
* error_message.c (com_err_terminate): Lock the list mutex before
/*@null@*/ static struct et_list * _et_list = (struct et_list *) NULL;
/*@null@*//*@only@*/static struct dynamic_et_list * et_list_dynamic;
static k5_mutex_t et_list_lock = K5_MUTEX_PARTIAL_INITIALIZER;
+static int terminated = 0; /* for debugging shlib fini sequence errors */
MAKE_INIT_FUNCTION(com_err_initialize);
MAKE_FINI_FUNCTION(com_err_terminate);
int com_err_initialize(void)
{
int err;
+ terminated = 0;
err = k5_mutex_finish_init(&et_list_lock);
if (err)
return err;
return 0;
}
-static int terminated = 0; /* for debugging shlib fini sequence errors */
void com_err_terminate(void)
{
struct dynamic_et_list *e, *enext;
if (! INITIALIZER_RAN(com_err_initialize) || PROGRAM_EXITING())
return;
+ k5_key_delete(K5_KEY_COM_ERR);
+ k5_mutex_destroy(&com_err_hook_lock);
k5_mutex_lock(&et_list_lock);
for (e = et_list_dynamic; e; e = enext) {
enext = e->next;
interfering with the global list of thread specific data
(used for library termination).
+2005-01-17 Jeffrey Altman <jaltman@mit.edu>
+
+ * threads.c: implement cleanup of static vars on library
+ unload (for Windows)
+
2004-12-15 Jeffrey Altman <jaltman@mit.edu>
* Makefile.in: rename krb5support_32.dll to k5sprt32.dll
/* XXX Memory leak here!
Need to destroy the associated data for all threads.
But watch for race conditions in case threads are going away too. */
+ assert(destructors_set[keynum] == 1);
+ destructors_set[keynum] = 0;
+ destructors[keynum] = 0;
LeaveCriticalSection(&key_lock);
#else /* POSIX */
- /* Not written yet. */
- abort();
+ /* Not written yet -- resource leak! */
+ /* abort(); */
#endif