#ifdef WIN32
/*
- * This is the tls index returned by TlsAlloc() on process init.
+ * This is the TLS index returned by TlsAlloc() on process init.
* Each thread, on thread attach in DllMain(), allocates its thread-local
* data and uses this index with TlsSetValue() to store it.
* It can then subsequently be retrieved with TlsGetValue().
struct gss_eap_thread_local_data *
gssEapGetThreadLocalData(void)
{
- return TlsGetValue(tlsIndex);
+ struct gss_eap_thread_local_data *tld;
+
+ tld = TlsGetValue(tlsIndex);
+
+ GSSEAP_ASSERT(tld != NULL);
+
+ return tld;
}
BOOL WINAPI
LPVOID reserved) /* reserved */
{
struct gss_eap_thread_local_data *tlsData;
+ OM_uint32 major, minor;
switch (reason) {
case DLL_PROCESS_ATTACH:
/* Allocate a TLS index. */
- gssEapInitiatorInit();
+ major = gssEapInitiatorInit(&minor);
+ if (GSS_ERROR(major))
+ return FALSE;
+
tlsIndex = TlsAlloc();
if (tlsIndex == TLS_OUT_OF_INDEXES)
return FALSE;
}
break;
case DLL_PROCESS_DETACH:
- /* Release the allocated memory for this thread. */
- tlsData = TlsGetValue(tlsIndex);
- if (tlsData != NULL)
- destroyThreadLocalData(tlsData);
/* Release the TLS index. */
TlsFree(tlsIndex);
gssEapFinalize();