ntdll: Introduce RtlProcessFlsData() and use it for FLS data destruction.
Signed-off-by: Paul Gofman <pgofman@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
dea850cfd5
commit
36981ad033
|
@ -1022,7 +1022,7 @@ void WINAPI DECLSPEC_HOTPATCH DeleteFiber( LPVOID fiber_ptr )
|
|||
RtlExitUserThread( 1 );
|
||||
}
|
||||
RtlFreeUserStack( fiber->stack_allocation );
|
||||
HeapFree( GetProcessHeap(), 0, fiber->fls_slots );
|
||||
RtlProcessFlsData( fiber->fls_slots, 3 );
|
||||
HeapFree( GetProcessHeap(), 0, fiber );
|
||||
}
|
||||
|
||||
|
|
|
@ -3255,7 +3255,8 @@ void WINAPI LdrShutdownThread(void)
|
|||
for (i = 0; i < tls_module_count; i++) RtlFreeHeap( GetProcessHeap(), 0, pointers[i] );
|
||||
RtlFreeHeap( GetProcessHeap(), 0, pointers );
|
||||
}
|
||||
RtlFreeHeap( GetProcessHeap(), 0, NtCurrentTeb()->FlsSlots );
|
||||
RtlProcessFlsData( NtCurrentTeb()->FlsSlots, 3 );
|
||||
NtCurrentTeb()->FlsSlots = NULL;
|
||||
RtlFreeHeap( GetProcessHeap(), 0, NtCurrentTeb()->TlsExpansionSlots );
|
||||
NtCurrentTeb()->TlsExpansionSlots = NULL;
|
||||
RtlReleasePebLock();
|
||||
|
|
|
@ -874,6 +874,7 @@
|
|||
@ stdcall RtlPopFrame(ptr)
|
||||
@ stdcall RtlPrefixString(ptr ptr long)
|
||||
@ stdcall RtlPrefixUnicodeString(ptr ptr long)
|
||||
@ stdcall RtlProcessFlsData(ptr long)
|
||||
@ stub RtlPropertySetNameToGuid
|
||||
@ stub RtlProtectHeap
|
||||
@ stdcall RtlPushFrame(ptr)
|
||||
|
|
|
@ -343,3 +343,13 @@ NTSTATUS WINAPI DECLSPEC_HOTPATCH RtlFlsGetValue( ULONG index, void **data )
|
|||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* RtlProcessFlsData (NTDLL.@)
|
||||
*/
|
||||
void WINAPI DECLSPEC_HOTPATCH RtlProcessFlsData( void *teb_fls_data, ULONG flags )
|
||||
{
|
||||
if (flags & 2)
|
||||
RtlFreeHeap( GetProcessHeap(), 0, teb_fls_data );
|
||||
}
|
||||
|
|
|
@ -3480,6 +3480,7 @@ NTSYSAPI NTSTATUS WINAPI RtlPinAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM);
|
|||
NTSYSAPI void WINAPI RtlPopFrame(TEB_ACTIVE_FRAME*);
|
||||
NTSYSAPI BOOLEAN WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN);
|
||||
NTSYSAPI BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
|
||||
NTSYSAPI void WINAPI RtlProcessFlsData(void*,ULONG);
|
||||
NTSYSAPI void WINAPI RtlPushFrame(TEB_ACTIVE_FRAME*);
|
||||
NTSYSAPI NTSTATUS WINAPI RtlQueryActivationContextApplicationSettings(DWORD,HANDLE,const WCHAR*,const WCHAR*,WCHAR*,SIZE_T,SIZE_T*);
|
||||
NTSYSAPI NTSTATUS WINAPI RtlQueryAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM,ULONG*,ULONG*,WCHAR*,ULONG*);
|
||||
|
|
Loading…
Reference in New Issue