Log meaningful messages before failing on windows with threadlocal.

This commit is contained in:
Nick Mathewson
2015-08-18 08:37:15 -04:00
parent 3d9952a3b1
commit 087cf882c6
+18 -2
View File
@@ -139,14 +139,30 @@ tor_threadlocal_destroy(tor_threadlocal_t *threadlocal)
void *
tor_threadlocal_get(tor_threadlocal_t *threadlocal)
{
return TlsGetValue(threadlocal->index);
void *value = TlsGetValue(threadlocal->index);
if (value == NULL) {
DWORD err = GetLastError();
if (err != ERROR_SUCCESS) {
char *msg = format_win32_error(err);
log_err(LD_GENERAL, "Error retrieving thread-local value: %s", msg);
tor_free(msg);
tor_assert(err == ERROR_SUCCESS);
}
}
return value;
}
void
tor_threadlocal_set(tor_threadlocal_t *threadlocal, void *value)
{
BOOL ok = TlsSetValue(threadlocal->index, value);
tor_assert(ok);
if (!ok) {
DWORD err = GetLastError();
char *msg = format_win32_error(err);
log_err(LD_GENERAL, "Error adjusting thread-local value: %s", msg);
tor_free(msg);
tor_assert(ok);
}
}
int