diff --git a/inc/errno.h b/inc/errno.h index 2f846a9..ce351d6 100644 --- a/inc/errno.h +++ b/inc/errno.h @@ -5,5 +5,4 @@ #define EILSEQ 2 #define ERANGE 3 -// TODO: make it thread-local -extern int errno; +extern _Thread_local int errno; diff --git a/src/code/errno.c b/src/code/errno.c index cdb2993..999fd65 100644 --- a/src/code/errno.c +++ b/src/code/errno.c @@ -1,4 +1,4 @@ #include -int errno; +_Thread_local int errno; diff --git a/src/win/win_threads.c b/src/win/win_threads.c index 8a669b5..1b89c7b 100644 --- a/src/win/win_threads.c +++ b/src/win/win_threads.c @@ -8,6 +8,8 @@ #include #include +DWORD _tls_index = 0; + void mtx_destroy(mtx_t *mtx) { CloseHandle(mtx->semaphore); } diff --git a/test/test_assert.c b/test/test_assert.c index bca2603..259a2ce 100644 --- a/test/test_assert.c +++ b/test/test_assert.c @@ -1,7 +1,7 @@ #include #include - +#include void do_more_stuff(char *ptr) { assert(ptr != NULL); } @@ -11,6 +11,7 @@ void do_stuff() { } int main() { + errno = 0; assert(2+2 == 4); do_stuff(); }