Commit 14a51fa4 authored by Paul Gofman's avatar Paul Gofman Committed by Alexandre Julliard

ntdll: Preserve untouched parts of xstate in set_thread_wow64_context().

parent 34e49897
...@@ -1281,9 +1281,11 @@ NTSTATUS set_thread_wow64_context( HANDLE handle, const void *ctx, ULONG size ) ...@@ -1281,9 +1281,11 @@ NTSTATUS set_thread_wow64_context( HANDLE handle, const void *ctx, ULONG size )
{ {
CONTEXT_EX *context_ex = (CONTEXT_EX *)(context + 1); CONTEXT_EX *context_ex = (CONTEXT_EX *)(context + 1);
XSAVE_AREA_HEADER *xs = (XSAVE_AREA_HEADER *)((char *)context_ex + context_ex->XState.Offset); XSAVE_AREA_HEADER *xs = (XSAVE_AREA_HEADER *)((char *)context_ex + context_ex->XState.Offset);
UINT64 mask = frame->xstate.Mask;
if (xstate_compaction_enabled) frame->xstate.CompactionMask |= xstate_extended_features(); if (xstate_compaction_enabled) frame->xstate.CompactionMask |= xstate_extended_features();
copy_xstate( &frame->xstate, xs, xs->Mask ); copy_xstate( &frame->xstate, xs, xs->Mask );
if (xs->CompactionMask) frame->xstate.Mask |= mask & ~xs->CompactionMask;
frame->restore_flags |= CONTEXT_XSTATE; frame->restore_flags |= CONTEXT_XSTATE;
} }
return STATUS_SUCCESS; return STATUS_SUCCESS;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment