2010-11-08 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>

* tlssup.c (__dyn_tls_init): Use an integer variable to iterate between
        __xd_a and __xd_z.
This commit is contained in:
Chris Sutcliffe 2010-12-27 21:01:13 +00:00
parent 8eb8d27274
commit c3abd2abe8
2 changed files with 17 additions and 9 deletions

View File

@ -1,3 +1,8 @@
2010-11-08 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
* tlssup.c (__dyn_tls_init): Use an integer variable to iterate between
__xd_a and __xd_z.
2010-08-17 Keith Marshall <keithmarshall@users.sourceforge.net> 2010-08-17 Keith Marshall <keithmarshall@users.sourceforge.net>
* include/limits.h (PATH_MAX): Make it agree with Microsoft's * include/limits.h (PATH_MAX): Make it agree with Microsoft's

View File

@ -94,6 +94,7 @@ BOOL WINAPI
__dyn_tls_init (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) __dyn_tls_init (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved)
{ {
_PVFV *pfunc; _PVFV *pfunc;
int nfuncs, ifunc;
#ifndef _WIN64 #ifndef _WIN64
if (_winmajor < 4) 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) if (__mingw_mthread_hdll == NULL || !__mingw_gMTRemoveKeyDtor || !__mingw_gMTKeyDtor)
{ {
__mingw_gMTKeyDtor = NULL; __mingw_gMTKeyDtor = NULL;
__mingw_gMTRemoveKeyDtor = NULL; __mingw_gMTRemoveKeyDtor = NULL;
if (__mingw_mthread_hdll) if (__mingw_mthread_hdll)
FreeLibrary (__mingw_mthread_hdll); FreeLibrary (__mingw_mthread_hdll);
__mingw_mthread_hdll = NULL; __mingw_mthread_hdll = NULL;
_CRT_MT = 0; _CRT_MT = 0;
return TRUE; return TRUE;
} }
_CRT_MT = 1; _CRT_MT = 1;
return TRUE; return TRUE;
@ -130,10 +131,12 @@ __dyn_tls_init (HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved)
return TRUE; 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) if (*pfunc != NULL)
(*pfunc)(); (*pfunc)();
} }
return TRUE; return TRUE;
} }