mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-15 06:10:39 +00:00
wow64: Preserve TEB exception frame in Wow64KiUserCallbackDispatcher.
This commit is contained in:
parent
de5f640abf
commit
21a3690ad1
|
@ -850,6 +850,8 @@ void WINAPI Wow64ApcRoutine( ULONG_PTR arg1, ULONG_PTR arg2, ULONG_PTR arg3, CON
|
|||
NTSTATUS WINAPI Wow64KiUserCallbackDispatcher( ULONG id, void *args, ULONG len,
|
||||
void **ret_ptr, ULONG *ret_len )
|
||||
{
|
||||
TEB32 *teb32 = (TEB32 *)((char *)NtCurrentTeb() + NtCurrentTeb()->WowTebOffset);
|
||||
ULONG teb_frame = teb32->Tib.ExceptionList;
|
||||
struct user_callback_frame frame;
|
||||
|
||||
frame.prev_frame = NtCurrentTeb()->TlsSlots[WOW64_TLS_USERCALLBACKDATA];
|
||||
|
@ -916,6 +918,7 @@ NTSTATUS WINAPI Wow64KiUserCallbackDispatcher( ULONG id, void *args, ULONG len,
|
|||
break;
|
||||
}
|
||||
|
||||
teb32->Tib.ExceptionList = teb_frame;
|
||||
NtCurrentTeb()->TlsSlots[WOW64_TLS_USERCALLBACKDATA] = frame.prev_frame;
|
||||
NtCurrentTeb()->TlsSlots[WOW64_TLS_TEMPLIST] = frame.temp_list;
|
||||
return frame.status;
|
||||
|
|
Loading…
Reference in a new issue