Fixes a regression introduced by 175a3649ba04daaad3f2b5b62d6bfe091d6a9e46, which caused Winamp's in_wave module to crash when playing a wav file (the previous behavior only changed EAX when there was no context).
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/ntdll/unix/signal_i386.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/ntdll/unix/signal_i386.c b/dlls/ntdll/unix/signal_i386.c index ff9d8a1..f2d58dc 100644 --- a/dlls/ntdll/unix/signal_i386.c +++ b/dlls/ntdll/unix/signal_i386.c @@ -1696,6 +1696,7 @@ struct apc_stack_layout * WINAPI setup_user_apc_dispatcher_stack( CONTEXT *conte { c.ContextFlags = CONTEXT_FULL; NtGetContextThread( GetCurrentThread(), &c ); + c.Eax = STATUS_USER_APC; context = &c; } memmove( &stack->context, context, sizeof(stack->context) ); @@ -1704,7 +1705,6 @@ struct apc_stack_layout * WINAPI setup_user_apc_dispatcher_stack( CONTEXT *conte stack->arg1 = arg1; stack->arg2 = arg2; stack->func = func; - stack->context.Eax = STATUS_USER_APC; return stack; }
On 1/8/21 20:29, Gabriel Ivăncescu wrote:
Fixes a regression introduced by 175a3649ba04daaad3f2b5b62d6bfe091d6a9e46, which caused Winamp's in_wave module to crash when playing a wav file (the previous behavior only changed EAX when there was no context).
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com
dlls/ntdll/unix/signal_i386.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/ntdll/unix/signal_i386.c b/dlls/ntdll/unix/signal_i386.c index ff9d8a1..f2d58dc 100644 --- a/dlls/ntdll/unix/signal_i386.c +++ b/dlls/ntdll/unix/signal_i386.c @@ -1696,6 +1696,7 @@ struct apc_stack_layout * WINAPI setup_user_apc_dispatcher_stack( CONTEXT *conte { c.ContextFlags = CONTEXT_FULL; NtGetContextThread( GetCurrentThread(), &c );
} memmove( &stack->context, context, sizeof(stack->context) );c.Eax = STATUS_USER_APC; context = &c;
@@ -1704,7 +1705,6 @@ struct apc_stack_layout * WINAPI setup_user_apc_dispatcher_stack( CONTEXT *conte stack->arg1 = arg1; stack->arg2 = arg2; stack->func = func;
- stack->context.Eax = STATUS_USER_APC; return stack;
}
Thanks for spotting this. Are you planning to do the same for x64?
I actually had no idea x64 had the same issue—I'll send a fix shortly, but I don't know of any apps to test it with (so if it's wrong, please resend corrected version).