From: Mika Lindqvist Date: Thu, 21 Jun 2018 11:51:06 +0000 (+0300) Subject: Make functable thread-local. X-Git-Tag: 1.9.9-b1~620 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=16b6cda67be0038327b416e5fa5c7243ed138e21;p=thirdparty%2Fzlib-ng.git Make functable thread-local. --- diff --git a/functable.c b/functable.c index d58ddbd0a..e0f0e40ce 100644 --- a/functable.c +++ b/functable.c @@ -54,7 +54,7 @@ ZLIB_INTERNAL uint32_t adler32_stub(uint32_t adler, const unsigned char *buf, si ZLIB_INTERNAL uint32_t crc32_stub(uint32_t crc, const unsigned char *buf, uint64_t len); /* functable init */ -ZLIB_INTERNAL struct functable_s functable = {fill_window_stub,insert_string_stub,adler32_stub,crc32_stub}; +ZLIB_INTERNAL __thread struct functable_s functable = {fill_window_stub,insert_string_stub,adler32_stub,crc32_stub}; /* stub functions */ diff --git a/functable.h b/functable.h index a8e8b7068..280651c32 100644 --- a/functable.h +++ b/functable.h @@ -15,7 +15,7 @@ struct functable_s { uint32_t (* crc32) (uint32_t crc, const unsigned char *buf, uint64_t len); }; -ZLIB_INTERNAL extern struct functable_s functable; +ZLIB_INTERNAL extern __thread struct functable_s functable; #endif diff --git a/zbuild.h b/zbuild.h index e2e6fc3e7..f375f2e68 100644 --- a/zbuild.h +++ b/zbuild.h @@ -5,6 +5,7 @@ #if defined(_MSC_VER) # include typedef SSIZE_T ssize_t; +# define __thread __declspec(thread) #endif #if defined(ZLIB_COMPAT)