mirror of
https://github.com/reactos/reactos.git
synced 2025-02-25 01:39:30 +00:00
Fix TLS callbacks. Testers, please test it on real software.
svn path=/trunk/; revision=38113
This commit is contained in:
parent
3e536240a1
commit
4c0f9b5052
1 changed files with 6 additions and 6 deletions
|
@ -40,7 +40,7 @@ typedef struct _TLS_DATA
|
|||
PVOID StartAddressOfRawData;
|
||||
DWORD TlsDataSize;
|
||||
DWORD TlsZeroSize;
|
||||
PIMAGE_TLS_CALLBACK TlsAddressOfCallBacks;
|
||||
PIMAGE_TLS_CALLBACK *TlsAddressOfCallBacks;
|
||||
PLDR_DATA_TABLE_ENTRY Module;
|
||||
} TLS_DATA, *PTLS_DATA;
|
||||
|
||||
|
@ -151,7 +151,7 @@ static __inline VOID LdrpAcquireTlsSlot(PLDR_DATA_TABLE_ENTRY Module, ULONG Size
|
|||
|
||||
static __inline VOID LdrpTlsCallback(PLDR_DATA_TABLE_ENTRY Module, ULONG dwReason)
|
||||
{
|
||||
PIMAGE_TLS_CALLBACK TlsCallback;
|
||||
PIMAGE_TLS_CALLBACK *TlsCallback;
|
||||
if (Module->TlsIndex != 0xFFFF && Module->LoadCount == 0xFFFF)
|
||||
{
|
||||
TlsCallback = LdrpTlsArray[Module->TlsIndex].TlsAddressOfCallBacks;
|
||||
|
@ -160,9 +160,9 @@ static __inline VOID LdrpTlsCallback(PLDR_DATA_TABLE_ENTRY Module, ULONG dwReaso
|
|||
while (*TlsCallback)
|
||||
{
|
||||
TRACE_LDR("%wZ - Calling tls callback at %x\n",
|
||||
&Module->BaseDllName, TlsCallback);
|
||||
TlsCallback(Module->DllBase, dwReason, NULL);
|
||||
TlsCallback = (PIMAGE_TLS_CALLBACK)((ULONG_PTR)TlsCallback + sizeof(PVOID));
|
||||
&Module->BaseDllName, *TlsCallback);
|
||||
(*TlsCallback)(Module->DllBase, dwReason, NULL);
|
||||
TlsCallback++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -271,7 +271,7 @@ LdrpInitializeTlsForProccess(VOID)
|
|||
TlsData->TlsDataSize = TlsDirectory->EndAddressOfRawData - TlsDirectory->StartAddressOfRawData;
|
||||
TlsData->TlsZeroSize = TlsDirectory->SizeOfZeroFill;
|
||||
if (TlsDirectory->AddressOfCallBacks)
|
||||
TlsData->TlsAddressOfCallBacks = *(PIMAGE_TLS_CALLBACK*)TlsDirectory->AddressOfCallBacks;
|
||||
TlsData->TlsAddressOfCallBacks = (PIMAGE_TLS_CALLBACK *)TlsDirectory->AddressOfCallBacks;
|
||||
else
|
||||
TlsData->TlsAddressOfCallBacks = NULL;
|
||||
TlsData->Module = Module;
|
||||
|
|
Loading…
Reference in a new issue