From c3abd2abe882abf26001254c0a00307489941e93 Mon Sep 17 00:00:00 2001 From: Chris Sutcliffe Date: Mon, 27 Dec 2010 21:01:13 +0000 Subject: 2010-11-08 Rodrigo Rivas Costa * tlssup.c (__dyn_tls_init): Use an integer variable to iterate between __xd_a and __xd_z. --- winsup/mingw/ChangeLog | 5 +++++ winsup/mingw/tlssup.c | 21 ++++++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) (limited to 'winsup/mingw') diff --git a/winsup/mingw/ChangeLog b/winsup/mingw/ChangeLog index e90df7c54..bc65b26cf 100644 --- a/winsup/mingw/ChangeLog +++ b/winsup/mingw/ChangeLog @@ -1,3 +1,8 @@ +2010-11-08 Rodrigo Rivas Costa + + * tlssup.c (__dyn_tls_init): Use an integer variable to iterate between + __xd_a and __xd_z. + 2010-08-17 Keith Marshall * include/limits.h (PATH_MAX): Make it agree with Microsoft's diff --git a/winsup/mingw/tlssup.c b/winsup/mingw/tlssup.c index b101d1124..660d09800 100644 --- a/winsup/mingw/tlssup.c +++ b/winsup/mingw/tlssup.c @@ -94,6 +94,7 @@ BOOL WINAPI __dyn_tls_init (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) { _PVFV *pfunc; + int nfuncs, ifunc; #ifndef _WIN64 if (_winmajor < 4) @@ -107,13 +108,13 @@ __dyn_tls_init (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) } if (__mingw_mthread_hdll == NULL || !__mingw_gMTRemoveKeyDtor || !__mingw_gMTKeyDtor) { - __mingw_gMTKeyDtor = NULL; - __mingw_gMTRemoveKeyDtor = NULL; - if (__mingw_mthread_hdll) - FreeLibrary (__mingw_mthread_hdll); - __mingw_mthread_hdll = NULL; - _CRT_MT = 0; - return TRUE; + __mingw_gMTKeyDtor = NULL; + __mingw_gMTRemoveKeyDtor = NULL; + if (__mingw_mthread_hdll) + FreeLibrary (__mingw_mthread_hdll); + __mingw_mthread_hdll = NULL; + _CRT_MT = 0; + return TRUE; } _CRT_MT = 1; return TRUE; @@ -130,10 +131,12 @@ __dyn_tls_init (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) return TRUE; } - for (pfunc = &__xd_a + 1; pfunc != &__xd_z; ++pfunc) + nfuncs = &__xd_z - (&__xd_a + 1); + for (ifunc = 0; ifunc < nfuncs; ++ifunc) { + pfunc = (&__xd_a + 1) + ifunc; if (*pfunc != NULL) - (*pfunc)(); + (*pfunc)(); } return TRUE; } -- cgit v1.2.3