From c814a2627c0e389ec1f9df4eb27e578fef2b0087 Mon Sep 17 00:00:00 2001 From: dannysmith Date: Wed, 3 Sep 2008 06:07:34 +0000 Subject: [PATCH] * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is defined. (__gthread_setspecific): Revert 2008-08-31 change to __GTHREAD_HIDE_W32API case. Apply it to !__GTHREAD_HIDE_W32API case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@139927 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 8 ++++++++ gcc/gthr-win32.h | 15 ++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ee3bf7d..6bf89c0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2008-09-03 Danny Smith + + * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is + defined. + (__gthread_setspecific): Revert 2008-08-31 change to + __GTHREAD_HIDE_W32API case. Apply it to !__GTHREAD_HIDE_W32API + case. + 2008-09-02 Aldy Hernandez * diagnostic.c (error_at): New. diff --git a/gcc/gthr-win32.h b/gcc/gthr-win32.h index f236aa3..e9a6e88 100644 --- a/gcc/gthr-win32.h +++ b/gcc/gthr-win32.h @@ -32,6 +32,11 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #ifndef GCC_GTHR_WIN32_H #define GCC_GTHR_WIN32_H +/* Make sure CONST_CAST2 (origin in system.h) is declared. */ +#ifndef CONST_CAST2 +#define CONST_CAST2(TOTYPE,FROMTYPE,X) ((__extension__(union {FROMTYPE _q; TOTYPE _nq;})(X))._nq) +#endif + /* Windows32 threads specific definitions. The windows32 threading model does not map well into pthread-inspired gcc's threading model, and so there are caveats one needs to be aware of. @@ -455,10 +460,7 @@ __gthread_getspecific (__gthread_key_t key) static inline int __gthread_setspecific (__gthread_key_t key, const void *ptr) { - if (TlsSetValue (key, CONST_CAST2(void *, const void *, ptr)) != 0) - return 0; - else - return GetLastError (); + return __gthr_win32_setspecific (key, ptr); } static inline void @@ -615,7 +617,10 @@ __gthread_getspecific (__gthread_key_t key) static inline int __gthread_setspecific (__gthread_key_t key, const void *ptr) { - return (TlsSetValue (key, (void*) ptr) != 0) ? 0 : (int) GetLastError (); + if (TlsSetValue (key, CONST_CAST2(void *, const void *, ptr)) != 0) + return 0; + else + return GetLastError (); } static inline void -- 2.7.4