From 5cf93a65327b952e9ebb3c8cfd9d4a3deee4394c Mon Sep 17 00:00:00 2001 From: bumbread Date: Wed, 22 Jun 2022 00:40:10 +1100 Subject: [PATCH] Make _Thread_local work on windows haven't tested tho --- inc/errno.h | 3 +-- src/code/errno.c | 2 +- src/win/win_threads.c | 2 ++ test/test_assert.c | 3 ++- 4 files changed, 6 insertions(+), 4 deletions(-) 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(); }